在学MFC 的第一课就是讲windows的消息机制,其中这一部分是通过WndProc这个函数来完成的,用一个消息循环来捕捉消息。
虽然在WPF里 没有 WndProc 这个函数,但是提供了另一种方法来完成挂钩的功能。
在WinForm 里 只需重载 WndProc 函数便可完成消息响应
private const int WM_SIZEING = 0x0214; //窗口改变大小消息
protected override void WndProc(ref System.Windows.Forms.Message m )
{
switch(m.Msg)
{
case WM_SIZEING:
//...........你的代码
break;
default:
base.WndProc(ref m); // 调用基类函数处理其他消息。
break;
}
}
而在wpf 里 要借助HwndSource 才能完成捕获消息的功能
首先看看HwndSource ,msdn是这么写的:
HwndSource 实现包含 WPF 内容的 Win32 窗口。 WPF 内容在此窗口中排列、度量、呈现,并且可交互式输入。
HwndSource 类设计用于一般的交互操作,而不是设计用作托管 HWND 包装。 通常,它不会提供操作窗口的托管方法或检测其状态的属性。 相反,HwndSource 类提供通过 Handle 属性对 Win32 窗口句柄 (HWND) 的访问,可通过 PInvoke 技术将其传递到 Win32 APIs 以操作该窗口。
构造
HwndSource 的诸多方面只能在构造时指定。 若要创建 HwndSource,请首先创建