WPF處理消息使用說明
WPF開發(fā)工具可以幫我們實現(xiàn)許多功能。比如我們今天要向大家介紹的有關(guān)WPF處理消息的實現(xiàn)方法,就可以簡單輕松的幫助開發(fā)人員實現(xiàn)。#t#
在你運行WPF程序的時候——new App().Run(new MyWindow()),有時候要使用Win32API進行WPF處理消息的時候該怎么辦?其實很簡單,一切的需要都在System.Windows.Interop這個namespace中,這個namespace中所包含的東西主要是為Windows Presentation Foundation (WPF) 和其他技術(shù)(如 Win32API)之間的互操作提供支持類型,并為涉及WPF的其他特定互操作方案提供基類。
其他的我就不加以說明了,這里的主題是如何在WPF中使用WindowProc處理消息。
在WPF處理消息中使用WindowProc,首先要獲得一個HWND句柄(一個IntPtr類型),然后通過創(chuàng)建一個HwndSource對象,再通過調(diào)用這個對象中的AddHook方法來添加WindowProc。
- // 其他namespace
- using System.Windows.Interop;
- public partial class
MyWindow : Window- {
- public MyWindow()
- {
- InitializeComponent();
- // 處理你要做的
- // 添加WindowProc
- IntPtr hwnd = new WindowInterop
Helper(this).Handle;- HwndSource.FromHwnd(hwnd).AddHook
(new HwndSourceHook(WndProc));- }
- IntPtr WndProc(IntPtr hwnd,
int msg, IntPtr wParam, IntPtr
lParam)- {
- // 處理你要處理的消息,具體的消息可
在WinUser.h中找到,或者在MSDN中- 查找
- }
- // 其他的
- }
在這段簡單的WPF處理消息代碼中,我所創(chuàng)建的WindowProc為WndProc。HwndSourceHook是一個Delegate,這里我把WndProc傳給了他。