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
) を使用すれば、ウィンドウが消えてからオブジェクトが破棄されるようにできます。
CDialogImpl
は CDialogImplBaseT
から派生します。また、後者は 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
はダイアログ プロシージャとして設定され、それ以降の呼び出しはそこに送られます。