Advertisement

简单说明PeekMessage和GetMassage的区别

阅读量:

其实看看他们的函数用法就知道区别:

GetMessage:

while ((pMsg = GetMessage(&msg, NULL, 0, 0)) != NULL)
{
TranslateMsgToUsText(&pMsg);
SendMsgToUsMsg(&pMsg);
}
if (msg.wParam) return msg.wParam;

PeedMessage:

循环开始于真
{
若调用 PeekMessage 函数查看消息(参数分别为指针 &msg、空指针、整型常量 0、整型常量 0 和 PM_Remove 标志)成功返回
{
若当前消息类型为 WM_QUIT 标识符
{
转出此循环
}
执行 TranslateMessage 函数翻译消息
随后执行 DispatchMessage 函数分发消息
}
否则
{
// 实现其他相关功能的具体行代码
}
}
返回 msg.wParam 值。

因此,分两种情况:

情况1:在存在待处理的消息时,在使用GetMassage和PeekMessage进行操作时均能处理这些消息,并且表现一致。

情况2:当消息队列为空时,在调用GetMessage之前不做任何操作,并一直等待直到接收下一条消息;而调用PeekMessage时则会进入else语句块中的代码,在处理完当前的消息后转向处理下一条消息。

全部评论 (0)

还没有任何评论哟~