1.DDX_Control 與 DDX_Text 區別
DDX_TEXT()的作用可以理解為把字符串變量和控件的文本(WindowText)關聯起來,
DDX_Control()的作用可以理解為把變量和控件本身關聯起來,
DoDataExchange(pDX)就是處理所有變量與其關聯控件交換數據的函數。
void CView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Text(pDX, IDC_ID_VALUE, m_strID);
DDX_Control(pDX, IDC_ID_VALUE, m_editID);
}
在程序中
通過update(TRUE)取得控件上的值到m_strID,處理修改后通過update(FALSE)傳回控件,界面顯示
通過m_editID.GetWindText(str),取得值,處理后,通過m_editID.SetWindText(str)傳回控件界面顯示
2.MFC BEGIN_MESSAGE_MAP()
BEGIN_MESSAGE_MAP(CpassApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
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_Notification(id, memberFxn)
其中id指定了發送通知的控件的子窗口的ID,而memberFxn指定了處理該通知的父對象中的成員函數名。
父對象的函數原型格式如下:
afx_msg void memberFxn( );
可能的消息映射入口如下:
映射入口 | 何時向父對象發送消息 |
ON_BN_CLICKED | 用戶單擊按鈕時 |
ON_BN_DOUBLECLICKED | 用戶雙擊按鈕時 |
3.ON_COMMAND和ON_MESSAGE的區別