(1)作業系統接收到應用程式的視窗訊息,將訊息投遞到該應用程式的訊息佇列中。
(2)應用程式在訊息迴圈中呼叫getmessage函式從訊息佇列中取出一條一條的訊息。
取出訊息後,應用程式可以對訊息進行一些預處理,例如,放棄對某些訊息的響應,或者呼叫translatemessage產生新的訊息。
(3)應用程式呼叫dispatchmessage,將訊息回傳給作業系統。
訊息是由msg結構體物件來表示的,其中就包含了接收訊息的視窗的控制代碼。因此,dispatchmessage函式總能進行正確的傳遞。
(4)系統利用wndclass結構體的lpfnwndproc成員儲存的視窗過程函式的指標呼叫視窗過程,對訊息進行處理(「即系統給應用程式傳送了訊息」)。
流程圖如下:
Windows應用程式訊息處理機制
1 作業系統接收到應用程式的視窗訊息,將訊息投遞到該應用程式的訊息佇列中。2 應用程式在訊息迴圈中呼叫getmessage函式從訊息佇列中取出一條一條的訊息。取出訊息後,應用程式可以對訊息進行一些預處理,例如,放棄對某些訊息的響應,或者呼叫translatemessage產生新的訊息 3 應用程式呼...
從Windows訊息的角度看視窗應用程式的執行過程
乙個典型的win32視窗應用程式的框架是這樣的 程式入口點 winmain函式 註冊視窗類 呼叫registerclass函式或registerclas 函式 建立主視窗 呼叫createwindow函式或createwindowex函式 顯示主視窗 呼叫showwindow函式 更新主視窗 呼叫u...
C 開發WINDOWS應用程式時訊息的處理
windows應用程式是靠訊息驅動的,在vc中我們通過classwizard可以為某視窗類新增訊息處理函式,classwizard將為你新增訊息對映,對於windows訊息,生成的訊息處理函式過載了基類的虛擬方法。而在c 中如何處理訊息呢?本文針對vs.net beta1環境下的c 簡單地介紹win...