PeekMessage

【勇芳软件工作室】汉化HomePreviousNext

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将其从队列中删除。

也可以看看

GetMessage, IsChild, MSG, PostAppMessage, WaitMessage