GetMessage和PeekMessage

PeekMessage返回TRUE的条件是有消息,如果没有消息返回FALSE。

GetMessage返回TRUE的条件是有消息且该消息不为WM_QUIT。返回FALSE的条件是有消息且该消息为WM_QUIT。

 

另外再明确三个消息的区别:

WM_CLOSE,WM_DESTROY,WM_QUIT

 

WM_CLOSE:一个窗口被关闭时发出的消息,被关闭时通常需要有“提醒用户保存”等操作。

WM_DESTROY:窗口正在关闭时发出的消息,这时候窗口已经从视觉上消失,应用程序在没有窗口的条件下运行。

WM_QUIT:应用程序结束时发出的消息,一般可以看成进程被kill的情况。

 

我们关闭一个程序的过程是这样的:

发送WM_CLOSE,然后调用DestroyWindow函数,调用DestroyWindow函数时系统会向程序发送WM_DESTROY消息,WM_DESTROY消息调用PostQuitMessage函数,发送WM_QUIT消息。终止整个进程。

 

程序通常这样写:

 

while( GetMessage(&msg,0,0,0) )
{
       TranslateMessage(&msg);
       DispatchMessage(&msg);
}
 
 
while( TRUE )
{
              if(PeekMessage(&msg,0,0,0,PM_REMOVE) == TRUE )
              {
                     if(msg.message == WM_QUIT )
                     {
                            break;
                     }
                     TranslateMessage(&msg);
                     DispatchMessage(&msg);
              }
              else
              {
              }
}
 
switch(uMsg)
       {
       caseWM_CLOSE:
              break;
       caseWM_DESTROY:
              PostQuitMessage(0);
              break;
       default:
              break;
       }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值