在WPF中使用WindowProc处理消息

在学MFC 的第一课就是讲windows的消息机制,其中这一部分是通过WndProc这个函数来完成的,用一个消息循环来捕捉消息。虽然在WPF里 没有 WndProc 这个函数,但是提供了另一种方法来完成挂钩的功能。在WinForm  里 只需重载 WndProc 函数便可完成消息响应。

WinForm:

       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:

在你运行WPF程序的时候——new App().Run(new MyWindow()),有时候要使用Win32API处理消息的时候该怎么办?其实很简单,一切的需要都在System.Windows.Interop这个namespace中,这个namespace中所包含的东西主要是为 Windows Presentation Foundation (WPF) 和其他技术(如 Win32API)之间的互操作提供支持类型,并为涉及 WPF 的其他特定互操作方案提供基类。其他的我就不加以说明了,这里的主题是如何在WPF中使用WindowProc处理消息。

在WPF中使用WindowProc,首先要获得一个HWND句柄(一个IntPtr类型),然后通过创建一个HwndSource对象,再通过调用这个对象中的AddHook方法来添加WindowProc。

首先看看HwndSource ,msdn是这么写的:

HwndSource 实现包含 WPF 内容的 Win32 窗口。 WPF 内容在此窗口中排列、度量、呈现,并且可交互式输入。

HwndSource 类设计用于一般的交互操作,而不是设计用作托管 HWND 包装。 通常,它不会提供操作窗口的托管方法或检测其状态的属性。 相反,HwndSource 类提供通过 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值