GetMessage(&msg, nullptr, 0, 0)
我们转到定义,
BOOL WINAPI GetMessage(
_Out_ LPMSG lpMsg,//指向Msg的指针,用于存放获取到的消息_In_opt_ HWND hWnd,//需要获取消息的窗口的句柄,该窗口必须属于当前线程
_In_ UINT wMsgFilterMin,//指定被可以被获取的消息值的最小整数(消息其实就是一个被定义的整数)
_In_ UINT wMsgFilterMax);//指定被可以被获取的消息值的最大整数
hWnd当其值是 NULL 时,将获取所有的当前线程的窗口消息和线程消息;当其值是 -1 时,只获取当前线程消息
wMsgFilterMin 和 wMsgFilterMax 参数限定消息获取的范围,如果二者都为 0,则消息获取的范围为所有消息;
返回值BOOL:
1. 如果函数取得 WM_QUIT 之外的其他消息,返回值是非 0;
2. 如果函数取得 WM_QUIT 消息,返回值是 0;
3. 如果出现了错误,返回值是 -1。
以下转载:调用此函数的过程中,如果接收到非排队消息 —— 也就是由该线程调用 SendMessage, SendMessageCallback, SendMessageTimeout, 或 SendNotifyMessage 发送给所属窗口的消息 —— 系统先暂时挂起等待,然后再获取过滤器匹配的第一个队列消息。如果不指定过滤器,那么按照以下顺序获取消息:
- Sent messages
- Posted messages
- Input (hardware) messages and system internal events
- Sent messages (again)
- WM_PAINT messages
- WM_TIMER messages