跟我一起学Windows界面封装(三) 之 前奏篇:窗口过程函数(上)

窗口过程函数 

         好,终于进入正题了。

         在用MFC的时候,我们会发现MFC里面有消息映射,这么每个窗口类可以处理响应窗口消息,ATL也同样有自己的消息分发机制。由于窗口过程函数是全局函数(或静态函数),我们不可能吧一个程序的所有消息都在一个函数里面写,同时这个全局函数也没法和所有具体的窗口实例想绑定,即想调用具体类的成员函数都没办法实现,这样完成一个具有复杂功能的窗口程序也是不可能的了,我们上面的封装也一点意义都没了。为此,我们必须建立一个消息分发机制。

(1)方法1:映射表

         在窗口过程函数参数中,我们看到有一个HWND参数,这是能让我们知道是哪个窗口发来的。由于HWND句柄是全局唯一不重复的,也和我们窗口实例有着一一对应的关系。由此,我们就想到可以维护一个全局的Map,如Map<HWND, Void*>,这样将HWND和窗口实例对象This指针建立一个映射表,进而就能够将消息分发到具体的窗口类了。

         MFC就采用该方式,其维护了一个全局的哈希表来实现,代码就不再深究

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值