2018/11/21 MFC學習筆記 訊息處理
-
來自鍵盤的訊息
當用戶在鍵盤上按下某個鍵的時候,會產生WM_KEYDOWN的訊息,釋放按鍵的時候會產生WM_KEYUP的訊息,所以這兩個訊息是成對出現的。而WM_CHAR訊息是在使用者輸入有效的ASCII碼的時候才會發生。
在前兩個訊息中,伴隨訊息傳遞的是按鍵的虛擬鍵碼,可以處理如方向鍵、功能鍵的訊息。而伴隨WM_CHAR訊息的引數是所按鍵的ASCII碼,ASCII是可以區分字母的大小寫的。 -
來自滑鼠的訊息
WM_MOUSEMOVE --滑鼠移過視窗的顯示區域時
WM_LBUTTONDOWN --按下左鍵
WM_LBUTTONUP --釋放左鍵
WM_LBUTTONDBCLICK --雙擊左鍵
WM_RBUTTONNDOWN --按下右鍵
WM_RBUTTONUP --釋放右鍵
WM_RBUTTONDBCLICK --雙擊右鍵
Windows系統並不是在滑鼠移動每一個畫素的時候都產生WM_MOUSEMOVE訊息
- 來自視窗的訊息
WM_CREATE 視窗被建立
WM_DESTROY 視窗被銷燬
WM_CLOSE 視窗被關閉
WM_PAINT 視窗發生重繪
WM_SIZE 視窗發生改變
WM_MOVE 視窗發生移動
WM_CLOSE訊息發生在視窗要被關閉之前,一般的操作是回收所有分配給這個視窗的各種資源
-
來自焦點的訊息
當一個視窗從非活動狀態變成具有輸入焦點的活動狀態時,他就會收到WM_SETFOCUS的訊息,而當一個視窗失去輸入焦點變為非活動狀態時,他就會收到WM_KILLFOCUS訊息。 -
定時器訊息
當用戶為一個視窗設定了定時器資源之後,系統就會按規定的時間間隔向視窗傳送定時器訊息。定時器訊息只有一種:WM_TIMER,其響應函式是OnTimer.
在響應OnTimer函式之前,應該先設定一個定時器來觸發這個函式。系統不會自己去觸發OnTimer函式,所以要用SetTime函式來設定定時器。
當定時器時間觸發的時候,系統就會呼叫OnTimer函式。 -
命令訊息
WM_COMMAND是使用很頻繁的訊息之一。
命令訊息是當用戶選擇某選單項或者單擊某按鍵時傳送的訊息。
小結:
- Windows應用程式通過訊息來響應使用者動作,以使用者打字為例,流程如下:
使用者敲擊鍵盤
鍵盤產生鍵盤碼,傳送到Windows作業系統
作業系統將鍵盤碼翻譯為訊息
應用程式對訊息進行分類處理,呼叫對應的訊息處理函式作出反應。 - Windows作業系統有五種型別的訊息
鍵盤訊息
滑鼠訊息
焦點訊息:由焦點所在位置而產生
定時器訊息
命令訊息:由程式傳送特定命令而產生。