MFC中的消息映射

1  BEGIN_MESSAGE_MAP(CpassApp, CWinApp)
2      ON_COMMAND(ID_HELP, CWinApp::OnHelp)
3  END_MESSAGE_MAP()


這些都是宏定義,不是函數。 
在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之間添加你的消息響應函數,爲每個消息處理函數加入一個入口

 



BEGIN_MESSAGE_MAP( theClass, baseClass )

參數:

theClass 指定消息映射所屬的類的名字。
baseClass 指定theClass的基類的名字。


說明:
使用BEGIN_MESSAGE_MAP宏開始你的消息映射的定義。
在你的類的成員函數的實現文件(.CPP)中,使用BEGIN_MESSAGE_MAP宏開始消息映射,然後爲每個消息處理函數加入一個入口,最後用END_MESSAGE_MAP宏結束消息映射。


每個消息映射入口的格式如下:
     ON_COMMAND(id, memberFxn)

   其中id指定了發送通知的控件的子窗口的ID(即該ID的事件被觸發了就會調用 memberFxn指向的函數 ,而memberFxn指定了處理該通知的成員函數名 。

     也可能無參數如: ON_WM_SYSCOMMAND()


   函數原型格式如下:
  afx_msg void memberFxn( );

可能的消息映射入口如下:

映射入口 何時向父對象發送消息
ON_BN_CLICKED   用戶單擊按鈕時
ON_BN_DOUBLECLICKED 用戶雙擊按鈕時

 

例如:

BEGIN_MESSAGE_MAP(CUEConnServerApp, CWinApp)
    //{{AFX_MSG_MAP(CUEConnServerApp)
    ON_COMMAND(ID_APP_SHOW, OnAppShow)
    ON_COMMAND(ID_APP_EXIT, OnAppExit)
    ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
    ON_COMMAND(ID_HELP_INDEX, OnHelpIndex)
    //}}AFX_MSG_MAP
    ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

 

又如:

BEGIN_MESSAGE_MAP(CAirFlux_Proxy_TeyDlg, CDialog)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()


例如:

1  BEGIN_MESSAGE_MAP(CpassDlg, CDialog)
2      ON_WM_SYSCOMMAND()
3      ON_WM_PAINT()
4      ON_WM_QUERYDRAGICON()
5       // }}AFX_MSG_MAP 
6      ON_BN_CLICKED(IDOK, OnOK)
7      ON_BN_CLICKED(IDCANCEL, OnExit)
8  END_MESSAGE_MAP()

void CTestDlg::OnSysCommand (UINT nID, LPARAM lParam)

這個函數響應系統控制菜單的命令 .(即左上角圖標處)。

OnSysCommand:The framework calls this member function when the user selects a command from the Control menu, or when the user selects the Maximize or the Minimize button.

另外:

DoDataExchange:當UpdateData時候

OnInitDialog:對話框類已經構造,但是對話框還沒有顯示出來的時候

OnQueryDragIcon :The framework calls this member function by a minimized (iconic) window that does not have an icon defined for its class. The system makes this call to obtain the cursor to display while the userdrags the minimized window .

發佈了18 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章