天天看點

VC++中對話框資料交換【十全十美】

     如果使用 DDX 機制,則通常在 OnInitDialog 處理程式或對話框構造函數中設定對話框對象成員變量的初始值。在對話框即将顯示前,架構的 DDX 機制将成員變量的值傳輸給對話框中的控件,當對話框本身為響應 DoModal 或 Create 而出現時,這些值即出現在該對話框中。

CDialog 中 OnInitDialog 的預設實作調用 CWnd 類的 UpdateData 成員函數以初始化對話框中的控件。當使用者單擊“确定”按鈕(或任何時候調用參數為 TRUE 的 UpdateData 成員函數)時,同樣是該機制将控件中的值傳輸到成員變量。對話框資料驗證機制将驗證您指定了驗證規則的任何資料項。 

        正如傳遞給它的 BOOL 參數所指定的那樣,UpdateData 進行雙向交換。為了執行交換,UpdateData 設定 CDataExchange 對象并調用對話框類對 CDialog 的 DoDataExchange 成員函數的重寫。DoDataExchange 采用 CDataExchange 類型的參數。傳遞給 UpdateData 的 CDataExchange 對象

表示交換的上下文,它定義交換方向等資訊。當您(或某個代碼向導)重寫 DoDataExchange 時,也就指定了對每一資料成員(控件)的一個 DDX 函數的調用。UpdateData 傳遞給您的 DoDataExchange 一個 CDataExchange 參數,每個 DDX 函數都知道如何根據該參數所提供的上下文在兩個方向

交換資料。MFC 提供許多用于不同交換類型的 DDX 函數。下例顯示一個 DoDataExchange 重寫,其中調用了兩個 DDX 函數和一個 DDV 函數: 

繼續閱讀