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 サイトの他の関連記事を参照してください。