在WPF中處理WndProc訊息:探索替代技術
在Windows Forms中,重寫WndProc提供了直接的訊息處理路徑。將此功能轉換為WPF需要不同的方法。
System.Windows.Interop命名空間
WPF引進了System.Windows.Interop命名空間,其中包含HwndSource類別。此類別允許與本機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」。
以上是如何在 WPF 中處理本機 Windows 訊息而不重寫 WndProc?的詳細內容。更多資訊請關注PHP中文網其他相關文章!