Peekmessage和Getmessage都是向系统的消息队列中取得消息,有消息时将队列中的消息派发出去,不过性质不同:
1) PeekMessage:只要有消息,就返回TRUE,即使消息是WM_QUIT;没有消息的时候,它不会等待,而是立即返回,并返回FALSE。
函数功能:该函数为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构。
函数原型:BOOL PeekMessage(LPMSG IpMsg,HWND hWnd,UINT wMSGfilterMin,
UINT wMsgFilterMax,UINT wRemoveMsg);
参数:
lpMsg:接收消息信息的MSG结构指针;
hWnd:其消息被检查的窗口的句柄;
wMsgFilterMin:指定被检查的消息范围里的第一个消息;
wMsgFilterMax:指定被检查的消息范围里的最后一个消息;
wRemoveMsg:确定消息如何被处理。此参数可取下列值之一:
PM_NOREMOVE:PeekMessage处理后,消息不从队列里除掉;
PM_REMOVE:PeekMessage处理后,消息从队列里除掉。
2) GetMessage:从消息队列中取出消息并删除它们, 当消息队列是空的时候,它会一直等待,直到队列中存在消息, 当收到WM_QUIT消息时, 它返回FALSE, 这是GetMessage唯一返回FALSE的情况,其它都会返回TRUE, 代表一直等待或处理消息。
注意:不管是PeekMessage还是GetMessage, 它们都不会删除WM_PAINT消息!!!