共用方式為


CDataExchange 類別

支援 Microsoft Foundation 類別使用的對話方塊資料交換 (DDX) 和對話方塊資料驗證 (DDV) 常式。

語法

class CDataExchange

成員

公用建構函式

名稱 描述
CDataExchange::CDataExchange 建構 CDataExchange 物件。

公用方法

名稱 描述
CDataExchange::Fail 驗證失敗時呼叫。 將焦點重設為上一個控制項,並擲回例外狀況。
CDataExchange::P repareCtrl 準備指定的控制項以進行資料交換或驗證。 用於非編輯控制項。
CDataExchange::P repareEditCtrl 準備指定的編輯控制項以進行資料交換或驗證。
CDataExchange::P repareOleCtrl 準備指定的 OLE 控制項以進行資料交換或驗證。 用於非編輯控制項。

公用資料成員

名稱 描述
CDataExchange::m_bSaveAndValidate DDX 和 DDV 方向的旗標。
CDataExchange::m_pDlgWnd 資料交換的對話方塊或視窗。

備註

CDataExchange 沒有基類。

如果您要為自訂資料類型或控制項撰寫資料交換常式,或撰寫自己的資料驗證常式,請使用這個類別。 如需撰寫您自己的 DDX 和 DDV 常式的詳細資訊,請參閱 技術附注 26 。 如需 DDX 和 DDV 的概觀,請參閱 對話方塊資料交換和驗證 對話方塊

CDataExchange物件提供 DDX 和 DDV 進行所需的內容資訊。 當 DDX 用來填入資料成員之對話控制項的初始值時, 旗標 m_bSaveAndValidate為 FALSE。 當 DDX 用來將對話方塊控制項的目前值設定為資料成員,以及使用 DDV 來驗證資料值時,旗標 m_bSaveAndValidate 為 TRUE。 如果 DDV 驗證失敗,DDV 程式會顯示一個訊息方塊,說明輸入錯誤。 DDV 程式接著會呼叫 Fail 以將焦點重設為違規控制項,並擲回例外狀況以停止驗證程式。

繼承階層架構

CDataExchange

需求

標題: afxwin.h

CDataExchange::CDataExchange

呼叫這個成員函式以建構 CDataExchange 物件。

CDataExchange(
    CWnd* pDlgWnd,
    BOOL bSaveAndValidate);

參數

pDlgWnd
包含 控制項之父視窗的指標。 這通常是 CDialog 衍生的物件。

bSaveAndValidate
如果為 TRUE,這個物件會驗證資料,然後將控制項中的資料寫入成員。 如果為 FALSE,這個物件會將資料從成員移至控制項。

備註

CDataExchange自行建構 物件,以將資料交換物件中儲存額外的資訊,以傳遞至視窗的 CWnd::D oDataExchange 成員函式。

範例

CYourDataExchange dx(this, FALSE);
try
{
   DoDataExchange(&dx);
}
catch (CUserException *pe)
{
   // some part of the exchange went wrong
   // but the user has already been notified
   pe->Delete();
}

CDataExchange::Fail

架構會在對話資料驗證 (DDV) 作業失敗時呼叫這個成員函式。

void Fail();

備註

Fail 會將焦點和選取專案還原至驗證失敗的控制項(如果有要還原的控制項)。 Fail然後擲回 CUserException 類型的 例外狀況,以停止驗證程式。 例外狀況會導致顯示錯誤的訊息方塊。 DDV 驗證失敗之後,使用者可以在違規控制項中重新輸入資料。

當驗證失敗時,自訂 DDV 常式的實作者可以從其常式呼叫 Fail

如需撰寫您自己的 DDX 和 DDV 常式的詳細資訊,請參閱 技術附注 26 。 如需 DDX 和 DDV 的概觀,請參閱 對話方塊資料交換和驗證 對話方塊主題

CDataExchange::m_bSaveAndValidate

此旗標表示對話資料交換 (DDX) 作業的方向。

BOOL m_bSaveAndValidate;

備註

如果使用者 CDataExchange 編輯控制項之後,物件用來將資料從對話方塊控制項移至對話類別資料成員,則旗標為非零。 如果物件正用來從對話類別資料成員初始化對話控制項,則旗標為零。

在對話資料驗證期間,旗標也是非零值。

如需撰寫您自己的 DDX 和 DDV 常式的詳細資訊,請參閱 技術附注 26 。 如需 DDX 和 DDV 的概觀,請參閱 對話方塊資料交換和驗證 對話方塊主題

CDataExchange::m_pDlgWnd

包含 CWnd 物件的指標 ,其中對話資料交換 (DDX) 或驗證 (DDV) 正在進行中。

CWnd* m_pDlgWnd;

備註

此物件通常是 CDialog 物件。 自訂 DDX 或 DDV 常式的實作者可以使用這個指標來取得對話方塊視窗的存取權,其中包含其所操作的控制項。

如需撰寫您自己的 DDX 和 DDV 常式的詳細資訊,請參閱 技術附注 26 。 如需 DDX 和 DDV 的概觀,請參閱 對話方塊資料交換和驗證 對話方塊主題

CDataExchange::P repareCtrl

架構會呼叫這個成員函式,為對話資料交換 (DDX) 和驗證 (DDV) 準備指定的控制項。

HWND PrepareCtrl(int nIDC);

參數

nIDC
要針對 DDX 或 DDV 準備的控制項識別碼。

傳回值

針對 DDX 或 DDV 準備之控制項的 HWND。

備註

改用 PrepareEditCtrl 進行編輯控制項;將此成員函式用於所有其他控制項。

準備包含將控制項的 HWND 儲存在 類別中 CDataExchange 。 架構會使用此控制碼,在發生 DDX 或 DDV 失敗時,將焦點還原至先前的焦點控制項。

自訂 DDX 或 DDV 常式的實作者應該針對它們透過 DDX 交換資料或透過 DDV 驗證資料的所有非編輯控制項呼叫 PrepareCtrl

如需撰寫您自己的 DDX 和 DDV 常式的詳細資訊,請參閱 技術附注 26 。 如需 DDX 和 DDV 的概觀,請參閱 對話方塊資料交換和驗證 對話方塊主題

CDataExchange::P repareEditCtrl

架構會呼叫這個成員函式,為對話資料交換 (DDX) 和驗證 (DDV) 準備指定的編輯控制項。

HWND PrepareEditCtrl(int nIDC);

參數

nIDC
要針對 DDX 或 DDV 準備的編輯控制項識別碼。

傳回值

針對 DDX 或 DDV 準備的編輯控制項 HWND。

備註

請改為針對所有非編輯控制項使用 PrepareCtrl

準備由兩件事組成。 首先, PrepareEditCtrl 將控制項的 HWND 儲存在 類別中 CDataExchange 。 架構會使用此控制碼,在發生 DDX 或 DDV 失敗時,將焦點還原至先前的焦點控制項。 其次, PrepareEditCtrl 在 類別中 CDataExchange 設定旗標,指出要交換或驗證其資料的控制項是編輯控制項。

自訂 DDX 或 DDV 常式的實作者應該針對它們透過 DDX 交換資料或透過 DDV 驗證資料的所有編輯控制項呼叫 PrepareEditCtrl

如需撰寫您自己的 DDX 和 DDV 常式的詳細資訊,請參閱 技術附注 26 。 如需 DDX 和 DDV 的概觀,請參閱 對話方塊資料交換和驗證 對話方塊主題

CDataExchange::P repareOleCtrl

架構會呼叫這個成員函式,為對話資料交換 (DDX) 和驗證 (DDV) 準備指定的 OLE 控制項。

COleControlSite* PrepareOleCtrl(int nIDC);

參數

nIDC
要針對 DDX 或 DDV 準備的 OLE 控制項識別碼。

傳回值

OLE 控制項網站的指標。

備註

改用 PrepareEditCtrl 進行編輯控制項,或 針對所有其他非 OLE 控制項使用 PrepareCtrl

自訂 DDX 或 DDV 常式的實作者應該呼叫 PrepareOleCtrl 所有 OLE 控制項,這些控制項會透過 DDX 交換資料,或透過 DDV 驗證資料。

如需撰寫您自己的 DDX 和 DDV 常式的詳細資訊,請參閱 技術附注 26 。 如需 DDX 和 DDV 的概觀,請參閱 對話方塊資料交換和驗證 對話方塊主題

另請參閱

MFC 範例 VIEWEX
階層架構圖表
CWnd::D oDataExchange
CWnd::UpdateData