函数GetMessage

功能:从调用线程的消息队列里取得消息并放于指定的结构。

函数原型:

BOOL GetMessage(
_Out_ LPMSG lpMsg,
_In_opt_ HWND hWnd,
_In_ UINT wMsgFilterMin,
_In_ UINT wMsgFilterMax);

lpMsg:指向MSG结构的指针,该结构从线程的消息队列里接收消息信息。

hWnd:取得该消息的窗口句柄,值为NULL时,GetMessage会检索任何属于调用线程的窗口消息。

wMsgFilterMin:指定被检索的最小消息值的整数。

wMsgFilterMax:指定被检索的最大消息值的整数。

返回值:如果函数取得WM_QUIT之外的其他消息,返回非零值;如果函数取得WM_QUIT消息,返回0;如果出现错误,返回-1。比如hWnd是无效的窗口句柄或lpMsg是无效的指针。想获得更多的错误信息,调用GetLastError函数。

PS:GetMessage是一个阻塞函数(函数会一直等待知道有消息到来才有返回值),获取消息成功后,线程将从消息队列中删除该消息,但是GetMessage函数不能从消息队列中移除WM_PAINT消息,此消息一直在消息队列中直到被处理;并且GetMessage函数总是检索WM_QUIT消息,不管它是否在第3个参数和第4个参数指定的范围内。

原文地址:https://www.cnblogs.com/chen-cai/p/9028589.html