DispatchMessage负责:
1、将子窗口的消息(如WM_LBUTTONUP,转换成WM_COMMAND发给父窗口)
剖析Windows消息处理机制。(关于DispatchMessage,见最底部
))
WM_COMMAND和WM_NOTIFY
2、向同一线程的不同窗口的窗口处理函数分派消息。
子窗口和父窗口的消息传递
关于DispatchMessage的问题
DispatchMessage是同步的。
DispatchMessage到底干了什么
如果只是去调用相应的窗口,那自己写个switch不就可以了
DispatchMessage与switch不同之处在于DispatchMessage会
先调用windows,进入管态(大概是range 0),然后再由windows调用
窗口的函数。
为什么这么麻烦?
因为这样windows就可以知道你的程序运行到什么情况了,
windows来调用你的窗口,这样你的窗口返回的时候windows就知道
你已经处理过一个消息了,如果没有新的消息进入消息队列
windows就不再会给你的进程分配时间片
如果是你自己写switch的话,windows就不可能这样灵活的分配时间
资源利用率就会降低
那么还要消息循环干什么,windows直接把消息发给窗口不就可以了吗?
因为你要在消息循环里把KEY_DOWN和KEY_UP组合成WM_CHAR,
还可以直接屏蔽掉许多对你来说无用的消息,加快速度
DispatchMessage这一套机制大概是windows里最难理解的部分了
加载中,请稍候......