CDataExchange クラス
MFC で使われているダイアログ データ エクスチェンジ (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 の概要については、「ダイアログデータ Exchange と検証およびダイアログボックス」を参照してください。
オブジェクトは 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 の場合、このオブジェクトはデータをメンバーからコントロールに移動します。
注釈
ウィンドウのCWnd::D odataexchangeメンバー関数に渡す追加情報をデータ交換オブジェクトに格納するために、自身でオブジェクトを CDataExchange
構築します。
例
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 の概要については、「ダイアログデータ Exchange と検証およびダイアログボックスのトピック」を参照してください。
CDataExchange:: m_bSaveAndValidate
このフラグは、ダイアログデータエクスチェンジ (DDX) 操作の方向を示します。
BOOL m_bSaveAndValidate;
注釈
ユーザーがコントロールを編集した後に、オブジェクトがダイアログコントロールからダイアログクラスのデータメンバーにデータを移動するために使用されている場合 CDataExchange
、フラグは0以外になります。 ダイアログクラスのデータメンバーからダイアログコントロールを初期化するためにオブジェクトが使用されている場合、フラグは0になります。
ダイアログデータの検証 (DDV) では、フラグも0以外になります。
独自の DDX および DDV ルーチンを記述する方法の詳細については、「テクニカルノート 26」を参照してください。 DDX と DDV の概要については、「ダイアログデータ Exchange と検証およびダイアログボックスのトピック」を参照してください。
CDataExchange:: m_pDlgWnd
ダイアログデータエクスチェンジ (DDX) または検証 (DDV) が行われているCWndオブジェクトへのポインターを格納します。
CWnd* m_pDlgWnd;
注釈
通常、このオブジェクトは、 CDialog オブジェクトです。 カスタム DDX または DDV ルーチンを実装すると、このポインターを使用して、動作しているコントロールを含むダイアログウィンドウへのアクセスを取得できます。
独自の DDX および DDV ルーチンを記述する方法の詳細については、「テクニカルノート 26」を参照してください。 DDX と DDV の概要については、「ダイアログデータ Exchange と検証およびダイアログボックスのトピック」を参照してください。
CDataExchange::P repareCtrl
フレームワークは、このメンバー関数を呼び出して、ダイアログデータエクスチェンジ (DDX) および検証 (DDV) に対して指定されたコントロールを準備します。
HWND PrepareCtrl(int nIDC);
パラメーター
nIDC
DDX または DDV 用に準備するコントロールの ID。
戻り値
DDX または DDV 用に準備されているコントロールの HWND。
注釈
エディットコントロールではなく PrepareEditCtrl を使用します。このメンバー関数は、他のすべてのコントロールに使用します。
準備は、コントロールの HWND をクラスに CDataExchange
格納することで構成されます。 このハンドルは、DDX または DDV のエラーが発生した場合に、前にフォーカスしたコントロールにフォーカスを戻すために、このハンドルを使用します。
カスタムの ddx または DDV ルーチンを実装する場合は、ddx 経由でデータを交換したり、DDV を介してデータを検証したりするすべての非編集コントロールに対してを呼び出す PrepareCtrl
必要があります。
独自の DDX および DDV ルーチンを記述する方法の詳細については、「テクニカルノート 26」を参照してください。 DDX と DDV の概要については、「ダイアログデータ Exchange と検証およびダイアログボックスのトピック」を参照してください。
CDataExchange::P repareEditCtrl
フレームワークは、このメンバー関数を呼び出して、ダイアログデータエクスチェンジ (DDX) および検証 (DDV) に対して指定されたエディットコントロールを準備します。
HWND PrepareEditCtrl(int nIDC);
パラメーター
nIDC
DDX または DDV 用に準備するエディットコントロールの ID。
戻り値
DDX または DDV 用に準備されている編集コントロールの HWND。
注釈
すべての非編集コントロールには、代わりに PrepareCtrl を使用してください。
準備は、次の2つの要素で構成されます。 最初に、 PrepareEditCtrl
はコントロールの HWND をクラスに CDataExchange
格納します。 このハンドルは、DDX または DDV のエラーが発生した場合に、前にフォーカスしたコントロールにフォーカスを戻すために、このハンドルを使用します。 次に、 PrepareEditCtrl
データが交換または検証されるコントロールが編集コントロールであることを示すフラグをクラスに CDataExchange
設定します。
カスタムの ddx または DDV ルーチンを実装する場合は、ddx 経由でデータを交換したり、DDV を介してデータを検証したりするすべての編集コントロールに対してを呼び出す PrepareEditCtrl
必要があります。
独自の DDX および DDV ルーチンを記述する方法の詳細については、「テクニカルノート 26」を参照してください。 DDX と DDV の概要については、「ダイアログデータ Exchange と検証およびダイアログボックスのトピック」を参照してください。
CDataExchange::P repareOleCtrl
フレームワークは、このメンバー関数を呼び出して、ダイアログデータエクスチェンジ (DDX) および検証 (DDV) に対して指定された OLE コントロールを準備します。
COleControlSite* PrepareOleCtrl(int nIDC);
パラメーター
nIDC
DDX または DDV 用に準備する OLE コントロールの ID。
戻り値
OLE コントロールサイトへのポインター。
注釈
他のすべての非 OLE コントロールに対しては、エディットコントロールまたはPrepareCtrlの代わりにPrepareEditCtrlを使用します。
カスタムの ddx または DDV ルーチンを実装する場合は、ddx 経由でデータを交換したり、DDV を介してデータを検証したりするすべての OLE コントロールに対してを呼び出す PrepareOleCtrl
必要があります。
独自の DDX および DDV ルーチンを記述する方法の詳細については、「テクニカルノート 26」を参照してください。 DDX と DDV の概要については、「ダイアログデータ Exchange と検証およびダイアログボックスのトピック」を参照してください。