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 的概觀,請參閱 對話方塊資料交換和驗證 和 對話方塊主題 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應