WPF處理消息使用說(shuō)明
WPF開(kāi)發(fā)工具可以幫我們實(shí)現(xiàn)許多功能。比如我們今天要向大家介紹的有關(guān)WPF處理消息的實(shí)現(xiàn)方法,就可以簡(jiǎn)單輕松的幫助開(kāi)發(fā)人員實(shí)現(xiàn)。#t#
在你運(yùn)行WPF程序的時(shí)候——new App().Run(new MyWindow()),有時(shí)候要使用Win32API進(jìn)行WPF處理消息的時(shí)候該怎么辦?其實(shí)很簡(jiǎn)單,一切的需要都在System.Windows.Interop這個(gè)namespace中,這個(gè)namespace中所包含的東西主要是為Windows Presentation Foundation (WPF) 和其他技術(shù)(如 Win32API)之間的互操作提供支持類型,并為涉及WPF的其他特定互操作方案提供基類。
其他的我就不加以說(shuō)明了,這里的主題是如何在WPF中使用WindowProc處理消息。
在WPF處理消息中使用WindowProc,首先要獲得一個(gè)HWND句柄(一個(gè)IntPtr類型),然后通過(guò)創(chuàng)建一個(gè)HwndSource對(duì)象,再通過(guò)調(diào)用這個(gè)對(duì)象中的AddHook方法來(lái)添加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中- 查找
- }
- // 其他的
- }
在這段簡(jiǎn)單的WPF處理消息代碼中,我所創(chuàng)建的WindowProc為WndProc。HwndSourceHook是一個(gè)Delegate,這里我把WndProc傳給了他。


















