1. 程式人生 > >2018/11/21 MFC學習筆記 訊息處理

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是使用很頻繁的訊息之一。
    命令訊息是當用戶選擇某選單項或者單擊某按鍵時傳送的訊息。

小結:

  1. Windows應用程式通過訊息來響應使用者動作,以使用者打字為例,流程如下:
    使用者敲擊鍵盤
    鍵盤產生鍵盤碼,傳送到Windows作業系統
    作業系統將鍵盤碼翻譯為訊息
    應用程式對訊息進行分類處理,呼叫對應的訊息處理函式作出反應。
  2. Windows作業系統有五種型別的訊息
    鍵盤訊息
    滑鼠訊息
    焦點訊息:由焦點所在位置而產生
    定時器訊息
    命令訊息:由程式傳送特定命令而產生。