Share via


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 の概要については、「ダイアログ データ交換」および「検証」および「ダイアログ ボックス」を参照してください。

CDataExchangeオブジェクトは、DDX と DDV を実行するために必要なコンテキスト情報を提供します。 DDX を使用してデータ メンバーからダイアログ コントロールの初期値を入力する場合Standard Edition、フラグ m_bSaveAndValidateは FAL です。 DDX を使用してダイアログ コントロールの現在の値をデータ メンバーに設定するとき、および DDV を使用してデータ値を検証する場合、フラグ m_bSaveAndValidate は TRUE です。 DDV 検証が失敗した場合、DDV プロシージャには、入力エラーを説明するメッセージ ボックスが表示されます。 DDV プロシージャは、フォーカスを問題のあるコントロールにリセットし、検証プロセスを停止する例外をスローする呼び出 Fail しを行います。

継承階層

CDataExchange

必要条件

ヘッダー: afxwin.h

CDataExchange::CDataExchange

オブジェクトを構築するには、このメンバー関数を CDataExchange 呼び出します。

CDataExchange(
    CWnd* pDlgWnd,
    BOOL bSaveAndValidate);

パラメーター

pDlgWnd
コントロールを含む親ウィンドウへのポインター。 通常、これは CDialog から派生したオブジェクトです。

bSaveAndValidate
TRUE の場合、このオブジェクトはデータを検証し、コントロールからメンバーにデータを書き込みます。 FAL Standard Edition 場合、このオブジェクトはメンバーからコントロールにデータを移動します。

解説

ウィンドウ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 使用してダイアログ コントロールからダイアログ クラスのデータ メンバーにデータを移動する場合、フラグは 0 以外です。 オブジェクトを使用してダイアログ クラスのデータ メンバーからダイアログ コントロールを初期化する場合、フラグは 0 です。

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

独自の DDX ルーチンおよび DDV ルーチンの記述の詳細については、テクニカル・ノート 26 を参照してください。 DDX と DDV の概要については、「ダイアログ データ交換と検証ダイアログ ボックスのトピック」を参照してください。

CDataExchange::m_pDlgWnd

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

CWnd* m_pDlgWnd;

解説

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

独自の DDX ルーチンおよび DDV ルーチンの記述の詳細については、テクニカル・ノート 26 を参照してください。 DDX と DDV の概要については、「ダイアログ データ交換と検証ダイアログ ボックスのトピック」を参照してください。

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 の概要については、「ダイアログ データ交換と検証ダイアログ ボックスのトピック」を参照してください。

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 の概要については、「ダイアログ データ交換と検証ダイアログ ボックスのトピック」を参照してください。

CDataExchange::P repareOleCtrl

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

COleControlSite* PrepareOleCtrl(int nIDC);

パラメーター

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

戻り値

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

解説

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

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

独自の DDX ルーチンおよび DDV ルーチンの記述の詳細については、テクニカル・ノート 26 を参照してください。 DDX と DDV の概要については、「ダイアログ データ交換と検証ダイアログ ボックスのトピック」を参照してください。

関連項目

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