對話資料交換

如果您使用 DDX 機制時,您設定的初始值對話方塊中的物件的成員變數,通常會在您OnInitDialog處理常式或對話方塊的建構函式。在對話方塊顯示之前,架構的 DDX 機制會將成員變數的值傳輸至] 對話方塊中,並顯示控制項,請立即出現對話方塊時本身以回應DoModal建立。預設實作OnInitDialogCDialog呼叫UpdateData成員函式類別的CWnd初始化的對話方塊中的控制項。

相同的機制將值從控制項成員變數來當使用者按一下 [確定] 按鈕 (或每當您呼叫UpdateData與引數的成員函式 ,則為 TRUE)。對話資料驗證機制會驗證任何資料項目,您可以替它指定驗證規則。

下圖說明了對話資料交換。

對話資料交換

對話資料交換

UpdateData雙向所指定的 BOOL 參數傳遞給它。若要執行 exchange, UpdateData設定CDataExchange物件和呼叫您的對話方塊類別會覆寫的CDialogDoDataExchange成員函式。DoDataExchange使用引數型別的CDataExchangeCDataExchange物件傳遞至UpdateData代表交換,定義這類資訊的交換方向的內容。

當您 (或程式碼精靈) 覆寫DoDataExchange,您可以指定每個資料成員 (控制項) 的一個 DDX 函式的呼叫。每個 DDX 函式知道如何交換兩個方向依所提供的內容資料CDataExchange引數傳遞給您DoDataExchange的UpdateData

MFC 提供許多的 DDX 函式,針對不同種類的交換。下列範例所示DoDataExchange在哪兩個 DDX 函式和一個 DDV 函式稱為 「 覆寫:

void CTestDialog::DoDataExchange(CDataExchange* pDX)
{
   CDialog::DoDataExchange(pDX);
   DDX_Check(pDX, IDC_MY_CHECKBOX, m_bVal);
   DDX_Text(pDX, IDC_MY_TEXTBOX, m_strName);
   DDV_MaxChars(pDX, m_strName, 20);
}

DDX_和DDV_行會資料對應。顯示範例 DDX 及 DDV 函式] 核取方塊控制項和一個編輯方塊控制項,分別為對齊。

如果使用者取消強制回應對話方塊中, OnCancel成員函式結束對話方塊並DoModal傳回的值 IDCANCEL。在此情況下,對話方塊與對話方塊物件之間不交換任何資料。

請參閱

概念

對話資料交換和驗證

對話方塊的存留期

對話資料驗證