對于這個函數,MSDN是這樣描述的:Called by the framework to exchange and validate dialog
data.
大意是架構調用此函數來改寫與确認對話框資料。
到是看了下DoDataExchange函數裡的DDX型函數,似乎明白了DoDataExchange函數的作用。
比如你設計一個遊戲,在結束之後彈出個對話框,需要你輸入大名,進而儲存你結果分數的紀錄(如圖1),這時你就要在這個對話框類裡添加一個變量,來提取文本框輸入時的使用者名。假設你的對話框ID為IDD_USERNAME_DIALOG,對應類為CUserDialog(UserDialog.cpp,UsernDialog.h),文本框控件的ID為IDC_USER_EDIT,為對話框類添加CString變量m_username,再用DoDataExchange函數将它綁定到你的動态按扭中,比如:DDX_Text(pDX,IDC_USER_EDIT,
m_username);這就是将m_username(這是一個外部變量,其定義在對話框的構造函數裡)綁定到IDC_USER_EDIT中。
void CUserDialog::DoDataExchange(CDataExchange*
pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_USER_EDIT, m_username);
DDV_MaxChars(pDX,m_username,10); //将使用者名的最大長度控件在10個字元
}
DDX:Dialog Data Exchange 表示對話框資料交換
DDV:Dialog Data Valid
表示對話框資料有效性
總之,這個函數對了解MFC架構是很有用的。對于寫控件也是很有用的。
good good study,day day up.....
UpdataData函數内部調用了DoDataExchange。該函數隻有一個布爾型參數,它決定了資料傳送的方向。調用UpdateData(TRUE)将資料從對話框的控件中傳送到對應的資料成員中,調用UpdateData(FALSE)則将資料從資料成員中傳送給對應的控件。
UpdateData(FALSE)是将變量的值傳到控件.
UpdateData(TRUE)是從控件中取值到關聯的變量
DoDataExchange會被架構調用,用來改變和驗證對話框的資料。在這個函數中一般是将控件和某些變量關聯,當在其它地方改變量的值,通過UpdateData 進行雙向交換。如:
UpdateData();//将控件的值傳給變量
m_username= "風中在飄牛";//分别為控件的變量指派
UpdateData(FALSE);//将變量的值傳給控件