关于win32中的GetMessage(..)

时间:2012-02-23 10:29:49

标签: winapi

我是win32-platform的初学者,有一些关于

的问题
BOOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax) ;

我不知道wMsgFilterMinwMsgFilterMax是什么意思?谢谢.....

2 个答案:

答案 0 :(得分:2)

首先,请记住,GetMessage()仅返回已发布的消息。其中没有很多,鼠标和键盘消息,WM_INPUT,WM_TIMER,WM_PAINT,WM_QUIT。加上你自己的代码通过调用PostMessage(),WM_USER +消息提供的任何代码。

使用过滤器非常不寻常,通常会传递0和0,因此不会过滤任何内容。您可能考虑传递WM_PAINT以刷新所有待处理的绘制请求。我认为没有任何理由过滤鼠标或键盘信息。但确定的用例是您自己发布的消息。例如,通常用于将通知从工作线程传递到UI线程。您可能希望对它们进行过滤,以便在任何常规消息之前对其进行处理。

把它放在你的后袋里。你可能有一天会使用它。

答案 1 :(得分:0)

范围从wMsgFilterMin到wMsgFilterMax到过滤。

消息号:WM_XX,例如WM_CREATE(0x0001),WN_PAINT(0x000f),范围从0x0001到0x000f将被返回。

如果只需要一种消息,那么使wMsgFilterMin等于wMsgFilterMax。

如果没有过滤(返回所有消息类型),则将wMsgFilterMin和wMsgFilterMax都放在0。