2、windows訊息系統組成:
訊息佇列:作業系統負責為程序維護乙個訊息佇列,程式執行時不斷地從訊息佇列進行訊息的獲取,處理訊息
訊息迴圈:應用程式不斷地獲取訊息,處理訊息構成訊息迴圈。
3、win32訊息路由
1. 訊息產生
2. 系統將訊息排列到其應該排放的執行緒的訊息佇列中。
3. 執行緒中的訊息迴圈呼叫getmessage (or peekmessage )獲取訊息。
4. 傳送訊息translatemessage and dispatchmessage to 視窗過程。
5. 在視窗過程中進行訊息處理。
4、訊息處理
應用程式的訊息機制主要由訊息迴圈來處理:
while (getmessage(&msg, null, 0, 0))
getmessage 函式從應用程式的佇列裡取出乙個訊息,如果這個訊息是 wm_quit(程式退出訊息)就返回 0,結束 while 迴圈。如果不是退出訊息,那麼就執行 translatemessage 翻譯訊息,這個操作主要是對一些訊息進行轉換,例如把鍵盤的虛擬鍵訊息轉換為字元訊息。
接著呼叫 dispatchmessage 將訊息分派給相應的視窗過程。
注意:他不是直接通過 dispatchmessage 呼叫我們的視窗過程 wndproc,這裡其實 dispatchmessage 是帶著訊息去找作業系統,然後再由作業系統呼叫 wndproc 視窗過程。看起來有點糾結哈,不過這就是訊息機制的乙個真實面目,作業系統為了絕對的控制權,時時刻刻都監控著應用程式的執行。
在視窗過程中,我們對感興趣的訊息進行監控並部署相應的**,對不感興趣的訊息我們都扔給defwindowproc,讓作業系統以預設的方式來處理訊息。
win32 訊息機制
本次使用的開發環境是vs2013,使用的開發語言是c c 建立的專案是win32專案 當 windows 應用程式開始執行時,系統會為該程式建立乙個訊息 佇列用於存放訊息,然後用 getmessage 等進行訊息獲取處理。程式從佇列中獲取訊息後處理 分為系統訊息佇列 有系統維護,存放系統產生的訊息如...
win32訊息機制
windows作業系統最大的特殊是良好的使用者互動性 訊息機制 產生訊息,傳遞訊息並處理訊息的過程 1.產生訊息 不可控 1 typedef struct tagmsg 2 msg 2.傳遞訊息 分成兩個部分,1 系統傳遞訊息給應用程式 不可控 2.應用程式傳遞訊息給應用程式 可控 windows作...
win32訊息機制 隨筆
windows訊息佇列的優先順序 如果需要改變乙個已有的計時器額時間間隔,可以使用不同的時間間隔再次呼叫settimer函式。如果乙個時鐘程式需要實現顯示描述或隱藏秒數的功能,就可以使用該方法。可以簡單的把 即使其的時間間隔設定未1000和6000毫秒之間。windows通過qs sendmessa...