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 的概觀,請參閱 對話框數據交換和驗證 和 對話框主題。