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