ホームページ >バックエンド開発 >C++ >WPF で WndProc メッセージを処理するにはどうすればよいですか?

WPF で WndProc メッセージを処理するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-22 23:08:10124ブラウズ

How Do I Handle WndProc Messages in WPF?

WPF での WndProc メッセージの処理

Windows フォームでは、WndProc メッセージの処理は簡単なプロセスです。ただし、WPF ではアプローチが少し異なります。

HwndSource クラスを使用します

WPF は、HwndSource クラスを含む System.Windows.Interop 名前空間を提供します。このクラスにより、WndProc メッセージのインターセプトと処理が可能になります。

実装例

次のコード スニペットは、HwndSource クラスを使用して WPF で WndProc メッセージを処理する例を示しています。

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

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        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>
この例では:

    Window1 クラスの WndProc メソッドは、受信メッセージを処理するためにオーバーライドされます。
  • OnSourceInitialized イベントは、ウィンドウに関連付けられた HwndSource に WndProc フックをアタッチするために使用されます。

詳細情報

この手法の詳細な説明については、WPF アプリケーションでのカスタム WndProc の使用に関する Steve Rands の優れたブログ投稿を参照してください。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。