在Visual的句柄创建后(如OnLoad、OnSourceInitialized代码里),使用下面方法:
方法一:
HwndSource source =PresentationSource.FromVisual(this) as HwndSource;
if(source != null) source.AddHook(WndProc);
方法二:
HwndSource source =HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
if(source != null) source.AddHook(WndProc);
注:两种方法中的this可换成Visual对象。
然后就可以HwndSourceHook委托的WndProc方法了:
private IntPtr WndProc(IntPtr hwnd,int msg,IntPtr wParam,IntPtr lParam,ref bool handled)
{
// Handle messages...
return IntPtr.Zero;
}