功能:從調用線程的消息隊列裡取得消息并放于指定的結構。
函數原型:
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個參數指定的範圍内。