PeekMessage函数检查线程消息队列中的消息,并将消息(如果有)放在指定的结构中。
BOOL PeekMessage(
LPMSG 【LPMSG】, | //指向消息结构的指针 |
HWND 【的hWnd】, | //处理窗口 |
UINT 【wMsgFilterMin】, | //第一个消息 |
UINT 【wMsgFilterMax】, | // last message |
UINT 【wRemoveMsg】 | //删除标志 |
); |
参数
【LPMSG】
指向MSG结构,其中包含基于Windows的应用程序队列中的消息信息。
【的hWnd】
标识要检查其消息的窗口。
【wMsgFilterMin】
指定要检查的消息范围内的第一条消息的值。
【wMsgFilterMax】
指定要检查的消息范围内的最后一条消息的值。
【wRemoveMsg】
指定消息的处理方式。此参数可以是以下值之一:
值 | 含义 |
PM_NOREMOVE | 消息在PeekMessage处理后不会从队列中删除。 |
PM_REMOVE | 消息在处理PeekMessage后从队列中删除。 |
您可以选择将PM_NOYIELD值与PM_NOREMOVE或PM_REMOVE组合。但是,PM_NOYIELD对32位Windows应用程序没有任何影响。它仅在Win32中定义,以提供与以前版本的Windows编写的应用程序的兼容性,用于阻止当前任务停止并将系统资源转移到另一个任务。32位Windows应用程序总是同时运行。
返回值
如果一条消息可用,则返回值不为零。
如果没有可用的消息,返回值为零。
备注
与GetMessage功能不同,PeekMessage函数不等待返回前将消息放入队列中。
PeekMessage仅检索与由IsChild功能指定的【的hWnd】参数或其任何子项标识的窗口相关联的消息,并在【wMsgFilterMin】和【wMsgFilterMax】参数给出的消息值范围内。如果【的hWnd】为NULL,则PeekMessage检索属于当前线程的任何窗口的消息。(PeekMessage不检索属于其他线程的Windows的消息。)如果【的hWnd】为-1,则PeekMessage只返回【的hWnd】值为PostAppMessage功能的消息。如果【wMsgFilterMin】和【wMsgFilterMax】均为零,则PeekMessage返回所有可用消息(即不执行范围过滤)。
WM_KEYFIRST和WM_KEYLAST常量可以用作检索所有键盘消息的过滤器值; WM_MOUSEFIRST和WM_MOUSELAST常量可用于检索所有鼠标消息。
PeekMessage功能通常不会从队列中删除WM_PAINT消息。WM_PAINT消息保留在队列中,直到处理完毕。但是,如果WM_PAINT消息具有空更新区域,则PeekMessage将其从队列中删除。
也可以看看