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 と検証およびダイアログボックスのトピック」を参照してください。

こちらもご覧ください

MFC のサンプル VIEWEX
階層図
CWnd::DoDataExchange
CWnd::UpdateData