CDialogImpl クラス

このクラスは、モーダルまたはモードレスのダイアログ ボックスを作成するためのメソッドを提供します。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

template <class T,
    class TBase = CWindow>
    class ATL_NO_VTABLE CDialogImpl : public CDialogImplBaseT<TBase>

パラメーター

T
CDialogImpl から派生したクラス。

TBase
新しいクラスの基底クラス。 既定の基底クラスは CWindow です。

メンバー

メソッド

関数 説明
作成 モードレス ダイアログ ボックスを作成します。
DestroyWindow モードレス ダイアログ ボックスを破棄します。
DoModal モーダル ダイアログ ボックスを作成します。
EndDialog モーダル ダイアログ ボックスを破棄します。

CDialogImplBaseT メソッド

関数 説明
GetDialogProc 現在のダイアログ ボックス プロシージャを返します。
MapDialogRect 指定した四角形のダイアログ ボックスの単位を画面単位 (ピクセル) にマップします。
OnFinalMessage 最後のメッセージを受信した後に呼び出されます (通常は WM_NCDESTROY)。

静的関数

関数 説明
DialogProc ダイアログ ボックスに送信されるメッセージを処理します。
StartDialogProc ダイアログ ボックスに送信されたメッセージを処理するために最初のメッセージを受信したときに呼び出されます。

解説

CDialogImpl を使用すると、モーダルまたはモードレスのダイアログ ボックスを作成できます。 CDialogImpl により、既定のメッセージ マップを使用し、該当するハンドラーにメッセージを送信するダイアログ ボックス プロシージャが提供されます。

基底クラスのデストラクター (~CWindowImplRoot) を使用すれば、ウィンドウが消えてからオブジェクトが破棄されるようにできます。

CDialogImplCDialogImplBaseT から派生します。また、後者は CWindowImplRoot から派生します。

Note

クラスは、ダイアログ テンプレート リソース ID を指定する IDD メンバーを定義する必要があります。 たとえば、ATL プロジェクト ウィザードによって次の行がクラスに自動的に追加されます。

enum { IDD = IDD_MYDLG };

ここで MyDlg は、ウィザードの [名前] ページに入力した短い名前です。

詳細情報: 参照トピック
コントロールの作成 ATL チュートリアル
ATL でのダイアログ ボックスの使用 ATL ウィンドウ クラス
ATL プロジェクト ウィザード ATL プロジェクトの作成
ダイアログ ボックス Windows SDK のダイアログ ボックスに関するトピックと後続のトピック

要件

ヘッダー: atlwin.h

CDialogImpl::Create

モードレス ダイアログ ボックスを作成します。

HWND Create(
    HWND hWndParent,
    LPARAM dwInitParam = NULL );

HWND Create(
    HWND hWndParent,
    RECT&,
    LPARAM dwInitParam = NULL);

パラメーター

hWndParent
[in] オーナー ウィンドウへのハンドル。

RECT& rect [in] ダイアログのサイズと位置を指定する RECT 構造体。

dwInitParam
[入力] WM_INITDIALOG メッセージの lParam パラメーターに、ダイアログ ボックスに渡す値を指定します。

戻り値

新しく作成されたダイアログ ボックスへのハンドル。

解説

このダイアログ ボックスは、CDialogImpl オブジェクトに自動的にアタッチされます。 モーダル ダイアログ ボックスを作成するには、DoModal を呼び出します。 上記の 2 番目のオーバーライドは CComControl でのみ使用されます。

CDialogImpl::DestroyWindow

モードレス ダイアログ ボックスを破棄します。

BOOL DestroyWindow();

戻り値

ダイアログ ボックスが正常に破棄された場合は TRUE、それ以外の場合は FALSE。

解説

ダイアログ ボックスが正常に破棄された場合は TRUE、それ以外の場合は FALSE を返します。

CDialogImpl::DialogProc

この静的関数では、ダイアログ ボックス プロシージャを実装します。

static LRESULT CALLBACK DialogProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);

パラメーター

hWnd
[in] ダイアログ ボックスへのハンドル。

uMsg
[in] ダイアログ ボックスに送信されるメッセージ。

wParam
[入力] メッセージ固有の追加情報。

lParam
[入力] メッセージ固有の追加情報。

戻り値

メッセージが処理される場合は TRUE。それ以外の場合は FALSE。

解説

DialogProc では、既定のメッセージ マップを使用して、メッセージを適切なハンドラーに送信します。

DialogProc をオーバーライドして、メッセージを処理するための別のメカニズムを提供することができます。

CDialogImpl::DoModal

モーダル ダイアログ ボックスを作成します。

INT_PTR DoModal(
    HWND hWndParent = ::GetActiveWindow(),
    LPARAM dwInitParam = NULL);

パラメーター

hWndParent
[in] オーナー ウィンドウへのハンドル。 既定値は、GetActiveWindow Win32 関数の戻り値です。

dwInitParam
[入力] WM_INITDIALOG メッセージの lParam パラメーターに、ダイアログ ボックスに渡す値を指定します。

戻り値

成功した場合は、EndDialog への呼び出しで指定された nRetCode パラメーターの値。 それ以外の場合は、-1。

解説

このダイアログ ボックスは、CDialogImpl オブジェクトに自動的にアタッチされます。

モードレス ダイアログ ボックスを作成するには、Create を呼び出します。

CDialogImpl::EndDialog

モーダル ダイアログ ボックスを破棄します。

BOOL EndDialog(int nRetCode);

パラメーター

nRetCode
[in] CDialogImpl::DoModal から返される値。

戻り値

ダイアログ ボックスが破棄される場合は TRUE。それ以外の場合は FALSE。

解説

EndDialog は、ダイアログ プロシージャを使用して呼び出す必要があります。 ダイアログ ボックスが破棄された後、Windows は、ダイアログ ボックスを作成した DoModal の戻り値として nRetCode の値を使用します。

Note

モードレス ダイアログ ボックスを破棄するために EndDialog を呼び出さないでください。 代わりに CWindow::DestroyWindow を呼び出します。

CDialogImpl::GetDialogProc

現在のダイアログ ボックス プロシージャである DialogProc を返します。

virtual WNDPROC GetDialogProc();

戻り値

現在のダイアログ ボックス プロシージャ。

解説

ダイアログ プロシージャを独自のものに置き換えるには、このメソッドをオーバーライドします。

CDialogImpl::MapDialogRect

指定した四角形のダイアログ ボックスの単位を画面単位 (ピクセル) に変換 (マップ) します。

BOOL MapDialogRect(LPRECT lpRect);

パラメーター

lpRect
更新領域を囲む更新のクライアント座標を受け取る CRect オブジェクトまたは RECT 構造体をポイントします。

戻り値

更新が成功した場合は 0 以外、更新が失敗した場合は 0。 拡張されたエラー情報を取得するには、GetLastError を呼び出します。

解説

関数は、指定された RECT 構造体の座標を変換された座標で置き換えます。これにより、構造体を使用してダイアログ ボックスを作成したり、ダイアログ ボックス内にコントロールを配置したりできます。

CDialogImpl::OnFinalMessage

最後のメッセージを受信した後に呼び出されます (通常は WM_NCDESTROY)。

virtual void OnFinalMessage(HWND hWnd);

パラメーター

hWnd
[入力] 破棄されているウィンドウへのハンドル。

解説

ウィンドウの破棄時にオブジェクトを自動的に削除する場合は、ここで delete this; を呼び出してください。

CDialogImpl::StartDialogProc

ダイアログ ボックスに送信されたメッセージを処理するために最初のメッセージを受信したときに 1 回だけ呼び出されます。

static LRESULT CALLBACK StartDialogProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);

パラメーター

hWnd
[in] ダイアログ ボックスへのハンドル。

uMsg
[in] ダイアログ ボックスに送信されるメッセージ。

wParam
[入力] メッセージ固有の追加情報。

lParam
[入力] メッセージ固有の追加情報。

戻り値

ウィンドウ プロシージャ。

解説

StartDialogProc への最初の呼び出しの後、DialogProc はダイアログ プロシージャとして設定され、それ以降の呼び出しはそこに送られます。

関連項目

BEGIN_MSG_MAP
クラスの概要