vc中win-qiut 消息在什么情况下出现
1个回答
展开全部
消息分为两种:队列化消息、非队列化消息
队列消息指消息队列里的消息,如WM_QUIT,用PostMessage发送的消息是队列消息
非队列消息指直接发送给窗口消息处理程序的消息,未经过消息队列,用SendMessage是非对列化消息
下面是通常结束程序的流程:
单击了 Close按钮,或者假设用键盘或鼠标从系统菜单中选择了 Close,
系统会给程序发送消息WM_SYSCOMMAND,WinMain通过DispatchMessage函数将其传送给WndProc,WndProc又将其交给DefWindowProc处理,DefWindowProc给窗口消息处理程序发送一条WM_CLOSE消息来响应之(非队列化消息),WndProc再次将它交给DefWindowProc,调用DestroyWindow函数
DestroyWindow函数的调用给窗口消息处理程序发送一条WM_DESTROY消息(非队列化消息)
WndProc再调用PostQuitMessage,将一条WM_QUIT消息放入消息队列中,DispatchMessage返回,GetMessage获得WM_QUIT,值为0,消息循环结束,WinMain中止。
队列消息指消息队列里的消息,如WM_QUIT,用PostMessage发送的消息是队列消息
非队列消息指直接发送给窗口消息处理程序的消息,未经过消息队列,用SendMessage是非对列化消息
下面是通常结束程序的流程:
单击了 Close按钮,或者假设用键盘或鼠标从系统菜单中选择了 Close,
系统会给程序发送消息WM_SYSCOMMAND,WinMain通过DispatchMessage函数将其传送给WndProc,WndProc又将其交给DefWindowProc处理,DefWindowProc给窗口消息处理程序发送一条WM_CLOSE消息来响应之(非队列化消息),WndProc再次将它交给DefWindowProc,调用DestroyWindow函数
DestroyWindow函数的调用给窗口消息处理程序发送一条WM_DESTROY消息(非队列化消息)
WndProc再调用PostQuitMessage,将一条WM_QUIT消息放入消息队列中,DispatchMessage返回,GetMessage获得WM_QUIT,值为0,消息循环结束,WinMain中止。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询