首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为啥不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢

2013-01-08 
为什么不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢?windows的窗口过程函数

为什么不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢?
windows的窗口过程函数,也就是向windows注册的窗体类的lpfnWndProc项所指向的函数,都被设计为回调函数呢? 

为什么不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢? 

侯捷在《深入浅出MFC中》,曾简单提到原因为“除了你需要调用它,有很多时候操作系统也需要调用你的窗口函数(例如当某个消息产生或某个事件发生)。窗口函数设计为callback形式,才能开放出一个接口给操作系统调用。” 
我不太明白 ……
[解决办法]
这个很好理解,你的程序在GetMessage()之后调用窗口函数,是在一个进程里,也就是说地址都是共享的,如果是别的进程需要发消息给你,由于不在一个进程,它即使获取你的窗口函数也没用,因为地址根本无法访问,所以这种情况下,只能通过回调这种机制来实现消息的响应
当然还有别的原因,回调有个好处,就是调用方不需要知道具体的函数,只要发消息即可,这样可以降低程序的耦合度,更好的实现模块化

热点排行