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()
例如:
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 .