LPARAM SetMessageExtraInfo( LPARAM lParam // application-defined value ,将一个程序定义的附加信息的值与调用函数的线程的消息队列关联起来 ); //函数返回前一个关联的信息 LPARAM GetMessageExtraInfo(VOID); //获取10.获取线程消息队列的状态信息BOOL GetInputState(VOID); 判断当前消息队列中是否有键盘和鼠标的消息,有返回TRUE,没有返回FALSE DWORD GetQueueStatus( UINT flags // message types ); //线程的消息队列的状态存放在THREADINFO结构的唤醒标志成员中,用户可以联合指定属性,函数的高字返回指定属性的一个子集,低字返回自上一次调用GetMessage/PeekMessage/GetQueueStatus函数以来存放在消息队列中的消息的类型的联合11.从消息队列中获取消息的函数BOOL GetMessage( LPMSG lpMsg, //[OUT] message information HWND hWnd, // handle to window,指定只获取属于窗口和窗口子窗口的消息,若为NULL则所有的窗口的消息和线程消息 UINT wMsgFilterMin, // first message UINT wMsgFilterMax // last message //若两个都为0则表示不限制 ); //若消息队列中没有投递消息则调用线程将会被挂起,若函数检测到QS_QUIT标志则返回FALSE, 否则返回TRUE,函数调用失败返回-1 typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; //消息存放在队列中的时间 POINT pt; //消息产生时鼠标的位置 } MSG, *PMSG; BOOL PeekMessage( LPMSG lpMsg, // message information HWND hWnd, // handle to window UINT wMsgFilterMin, // first message UINT wMsgFilterMax, // last message UINT wRemoveMsg // removal options ); //若是消息队列中没有投递消息则函数立即返回 PeekMessage和GetMessage都会在内部处理完线程的所有发送消息队列中的消息12.等待消息BOOL WaitMessage(VOID);
当调用这个函数后线程将会挂起,直到线程的消息队列中有消息时线程才会恢复执行