1、消息與隊列(在windows中,使用者程式可以調用系統的API函數,系統也可以調用使用者程式,這是調用時通過消息來進行的。)
(1)消息
MSG結構體定義:
typedef struct tagMSG
{
HWND hwnd; //消息所屬視窗
UINT message; //消息辨別符(WM_XXX宏)
WPARAM wParam; //消息附加說明
LPARAM lParam; //消息附加說明
DWORD time; //消息投遞到應用程式隊列的時間
POINT pt; //滑鼠目前位置
}MSG;
(2)消息隊列
Windows運作機制:例如按下滑鼠左鍵,産生WM_LBUTTONDOWN消息,系統會将此消息放到視窗所屬的應用程式消息隊列中,等待應用程式處理(windows會依次将産出的消息放入消息隊列)。應用程式通過消息循環不斷從隊列中取出消息并進行響應。
(3)Windows中包含進隊和不進隊消息。
2、Winmian函數
Windows 應用程式消息處理過程:
(1)作業系統接收應用程式的視窗消息,将消息投放到應用程式的消息隊列中。
(2)應用程式在消息循環中調用GetMessage函數從隊列中取出消息,然後進行一些處理。例如TranslateMessage産生新的消息。
(3)應用程式調用DispatchMessage将消息回傳給作業系統。
系統利用WNDCLASS結構體中lpfnWndProc成員儲存的視窗過程函數指針調用視窗過程函數,對消息進行處理。
本文轉自 韬光星夜 51CTO部落格,原文連結:http://blog.51cto.com/xfqxj/476984,如需轉載請自行聯系原作者