次の方法で共有


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 の概要については、「 Dialog Data Exchange と検証 および Dialog ボックスを参照してください。

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 の概要については、「 Dialog Data Exchange と検証 および Dialog Box トピックを参照してください。

CDataExchange::m_bSaveAndValidate

このフラグは、ダイアログ・データ交換 (DDX) 操作の方向を示します。

BOOL m_bSaveAndValidate;

解説

ユーザーがコントロールを編集した後で、 CDataExchange オブジェクトを使用してダイアログ コントロールからダイアログ クラスのデータ メンバーにデータを移動する場合、フラグは 0 以外です。 オブジェクトを使用してダイアログ クラスのデータ メンバーからダイアログ コントロールを初期化する場合、フラグは 0 です。

このフラグは、ダイアログ データ検証 (DDV) 中も 0 以外です。

独自の DDX ルーチンおよび DDV ルーチンの記述の詳細については、 テクニカル ノート 26を参照してください。 DDX と DDV の概要については、「 Dialog Data Exchange と検証 および Dialog Box トピックを参照してください。

CDataExchange::m_pDlgWnd

ダイアログ データ交換 (DDX) または検証 (DDV) が実行されている CWnd オブジェクトへのポインターを格納します。

CWnd* m_pDlgWnd;

解説

通常、このオブジェクトは CDialog オブジェクトです。 カスタム DDX ルーチンまたは DDV ルーチンの実装者は、このポインターを使用して、操作しているコントロールを含むダイアログ ウィンドウへのアクセスを取得できます。

独自の DDX ルーチンおよび DDV ルーチンの記述の詳細については、 テクニカル ノート 26を参照してください。 DDX と DDV の概要については、「 Dialog Data Exchange と検証 および Dialog Box トピックを参照してください。

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 の概要については、「 Dialog Data Exchange と検証 および Dialog Box トピックを参照してください。

CDataExchange::P repareEditCtrl

フレームワークは、このメンバー関数を呼び出して、ダイアログ データ交換 (DDX) および検証 (DDV) 用に指定された編集コントロールを準備します。

HWND PrepareEditCtrl(int nIDC);

パラメーター

nIDC
DDX または DDV 用に準備する編集コントロールの ID。

戻り値

DDX または DDV 用に準備されている編集コントロールの HWND。

解説

代わりに、 PrepareCtrl を編集しないすべてのコントロールに使用します。

準備は 2 つの要素で構成されます。 まず、 PrepareEditCtrl コントロールの HWND を CDataExchange クラスに格納します。 フレームワークでは、このハンドルを使用して、DDX または DDV エラーが発生した場合に、以前にフォーカスされたコントロールにフォーカスを復元します。 次に、PrepareEditCtrlCDataExchange クラスにフラグを設定して、データが交換または検証されるコントロールが編集コントロールであることを示します。

カスタム DDX ルーチンまたは DDV ルーチンの実装者は、DDX を介してデータを交換したり、DDV を介してデータを検証したりするすべての編集コントロールに対して PrepareEditCtrl を呼び出す必要があります。

独自の DDX ルーチンおよび DDV ルーチンの記述の詳細については、 テクニカル ノート 26を参照してください。 DDX と DDV の概要については、「 Dialog Data Exchange と検証 および Dialog Box トピックを参照してください。

CDataExchange::P repareOleCtrl

フレームワークは、このメンバー関数を呼び出して、ダイアログ データ交換 (DDX) および検証 (DDV) 用に指定された OLE コントロールを準備します。

COleControlSite* PrepareOleCtrl(int nIDC);

パラメーター

nIDC
DDX または DDV 用に準備する OLE コントロールの ID。

戻り値

OLE コントロール サイトへのポインター。

解説

代わりに、 PrepareEditCtrl を編集コントロールに使用するか PrepareCtrl 他のすべての OLE 以外のコントロールに使用します。

カスタム DDX ルーチンまたは DDV ルーチンの実装者は、DDX を介してデータを交換したり、DDV を介してデータを検証したりするすべての OLE コントロールに対して PrepareOleCtrl を呼び出す必要があります。

独自の DDX ルーチンおよび DDV ルーチンの記述の詳細については、 テクニカル ノート 26を参照してください。 DDX と DDV の概要については、「 Dialog Data Exchange と検証 および Dialog Box トピックを参照してください。

関連項目

MFC サンプル VIEWEX
階層図
CWnd::D oDataExchange
CWnd::UpdateData