为什么不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢?
windows的窗口过程函数,也就是向windows注册的窗体类的lpfnWndProc项所指向的函数,都被设计为回调函数呢?
为什么不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢?
侯捷在《深入浅出MFC中》,曾简单提到原因为“除了你需要调用它,有很多时候操作系统也需要调用你的窗口函数(例如当某个消息产生或某个事件发生)。窗口函数设计为callback形式,才能开放出一个接口给操作系统调用。”
我不太明白 ……
为什么不让应用程序在抓到消息(通过GetMessage())之后,直接调用窗口函数处理消息呢?
侯捷在《深入浅出MFC中》,曾简单提到原因为“除了你需要调用它,有很多时候操作系统也需要调用你的窗口函数(例如当某个消息产生或某个事件发生)。窗口函数设计为callback形式,才能开放出一个接口给操作系统调用。”
我不太明白 ……
...全文
相关推荐
MFC中的消息循环和窗口函数
此文档简要介绍了MFC中的消息循环和窗口过程函数,说明其内部传递的原理,有利于了解MFC的内部机制。
从内核层说清GetMessage , DispatchMessage
要点回顾: 一个GUI线程有一个消息队列: 普通线程–>GUI线程–>THREAD.W32THREAD -->THREADINFO–>消息队列 一个线程可以有多个窗口,所有窗口共享一个消息队列: _WINDOW_OBJECT ---->PTHREADINFO pti //所属线程 ---->WNDPROC IpfnWndProc //窗口过程(窗口回调函数) 为什么拿到句柄非得要回零环? GetMessage(&msg, NULL, 0, 0) Translate
MFC拦截消息方法PreTranslateMessage
重载PreTranslateMessage可以截获消息 doc
Visual C++模态对话框消息处理机制的分析
消息驱动机制是Windows操作系统的根本,模态对话框消息处理又是不同于一般消息处理的特殊形式。通过分析这种消息机制的原理,可用来处理类似的程序设计要求。
窗口消息处理
Windows窗口就是通过消息来与操作系统互动,窗口不能直接与使用者交流,使用者移动鼠标、敲键盘都是通过操作系统与窗口通信的,因此WinMain()函数中的消息循环很重要,没有它窗口便不能工作,而窗口消息处理函数更为重要,也是我们编程的主要对象。


