ホームページ > バックエンド開発 > C++ > WndProc をオーバーライドせずに WPF でネイティブ Windows メッセージを処理するにはどうすればよいですか?

WndProc をオーバーライドせずに WPF でネイティブ Windows メッセージを処理するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-22 22:41:11
オリジナル
155 人が閲覧しました

How Can I Handle Native Windows Messages in WPF Without Overriding WndProc?

WPF での WndProc メッセージの処理: 代替手法の探索

Windows フォームでは、WndProc をオーバーライドすると、ダイレクト メッセージ処理パスが提供されます。この機能を WPF に変換するには、別のアプローチが必要です。

System.Windows.Interop 名前空間

WPF では、HwndSource クラスを含む System.Windows.Interop 名前空間が導入されています。このクラスにより、ネイティブ Windows メッセージとの対話が可能になります。

実装例

WPF アプリケーションを作成し、HwndSource を使用してカスタム メッセージ処理を実装します。

<code class="language-csharp">using System;
using System.Windows;
using System.Windows.Interop;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        protected override void OnSourceInitialized(EventArgs e)
        {
            base.OnSourceInitialized(e);
            HwndSource source = PresentationSource.FromVisual(this) as HwndSource;
            source.AddHook(WndProc);
        }

        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            // 处理消息...

            return IntPtr.Zero;
        }
    }
}</code>
ログイン後にコピー

リソースの確認

この例は、Steve Rands のブログ投稿「WPF アプリケーションでのカスタム WndProc の使用」からインスピレーションを得ています。

以上がWndProc をオーバーライドせずに WPF でネイティブ Windows メッセージを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート