天天看點

WIN32 函數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個參數指定的範圍内。

繼續閱讀