- 概述
- 消息隊列
消息隊列分爲:系統消息隊列、線程消息隊列(應用程序消息隊列)
系統消息隊列:這是系統唯一的隊列,輸入設備(鼠標、鍵盤等)的驅動程序把用戶的操作轉換成消息的形式放置到系統隊列中,然後系統會把此消息轉到目標窗口所在的線程消息隊列中等待處理。
線程消息隊列:每個GUI(圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指採用圖形方式顯示的計算機操作用戶界面)線程都會維護一個線程消息隊列,(這個隊列只有在線程調用 User 或者 GDI 函數時纔會創建,默認並不創建)。然後線程消息隊列中的消息會被本線程的消息循環(有時也被稱爲消息泵)派送到相應的窗口過程(也叫窗口回調函數)處理。
- 補充
消息循環(消息泵):Windows爲當前執行的每一個Windows程序維護一個消息隊列,在發生輸入事件後,Windows將事件轉換爲一個消息,並將消息放入程序的消息隊列中。程序通過執行一塊稱之爲「消息循環」的程序代碼從消息隊列中取出消息。代碼如下:
while(GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
在線程中運行該函數,並使用while循環不斷獲取SendMessage()、PostMessage()或硬件事件發送過來的消息,並使用GetMessage()接收,傳輸過程中可以自己組裝需要傳輸的數據(此處不做解釋)。
- 參考文獻
博客:https://www.cnblogs.com/skyofbitbit/p/3649104.html