1.GetMessage的作用
1.到“本进程”的消息队列中获取消息
2.如果本进程中没有消息,则向系统消息队列质询是否有本进程的消息
3.如果系统消息队列也没有消息,检查当前进程的所有窗口的需要重新绘制的区域,
如果有,则产生WM_PAINT消息,取得消息并返回处理
4.如果没有重新绘制的区域,检查是否有到时的定时器,产生WM_TIMER,返回处理执行
5.如果没有到时的定时器,整理程序的资源、内存等等
6.如果以上都没有,GetMessage阻塞等待,PostMessage会返回FALSE,交出程序的控制权
7.注意:如果GetMessage获取到的是WM_QUIT,则返回FALSE
2.GetMessage与PeekMessage的联系
由于GetMessage是阻塞函数,当没有消息产生时,会一直处于阻塞状态,效率极低;
而采用PeekMessage之后,只有当PeekMessage检测到有消息产生时,才调用GetMessage去接收消息
3.经试验,PostQuitMessage内部是调用的PostMessage实现程序退出的
SendMessage发出的WM_QUIT无法被GetMessage捕捉到,而PostMessage发出的WM_QUIT可以被GetMessage捕捉到
说明两者发出的WM_QUIT去了不同的地方
windows编程之深谈GetMessage
最新推荐文章于 2022-06-11 21:07:19 发布