共用方式為


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

注意

您的類別必須定義 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
[in]指定要傳遞至WM_INITDIALOG訊息之 lParam 參數中的對話框的值。

傳回值

新建立對話框的句柄。

備註

這個對話框會自動附加至 CDialogImpl 物件。 若要建立強制回應對話框,請呼叫 DoModal。 上述第二個覆寫只能與 CComControl 搭配使用。

CDialogImpl::D estroyWindow

終結無模式對話框。

BOOL DestroyWindow();

傳回值

如果對話框已成功終結,則為TRUE;否則為 FALSE。

備註

如果對話框成功終結,則會傳回 TRUE;否則為 FALSE。

CDialogImpl::D ialogProc

此靜態函式會實作對話框程式。

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

參數

hWnd
[in]對話框的句柄。

uMsg
[in]傳送至對話框的訊息。

wParam
[in]其他訊息特定資訊。

lParam
[in]其他訊息特定資訊。

傳回值

如果處理訊息,則為TRUE;否則為 FALSE。

備註

DialogProc 會使用預設訊息對應,將訊息導向適當的處理程式。

您可以覆寫 DialogProc 以提供處理訊息的不同機制。

CDialogImpl::D oModal

建立強制響應對話方塊。

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

參數

hWndParent
[in]擁有者視窗的句柄。 預設值是 GetActiveWindow Win32 函式的傳回值。

dwInitParam
[in]指定要傳遞至WM_INITDIALOG訊息之 lParam 參數中的對話框的值。

傳回值

如果成功,呼叫 EndDialog 中指定的 nRetCode 參數值 否則為 -1。

備註

這個對話框會自動附加至 CDialogImpl 物件。

若要建立無模式對話框,請呼叫 [建立]。

CDialogImpl::EndDialog

終結強制回應對話框。

BOOL EndDialog(int nRetCode);

參數

nRetCode
[in]CDialogImpl::D oModal 所傳回的值。

傳回值

如果對話框已終結,則為TRUE;否則為 FALSE。

備註

EndDialog 必須透過對話框程式呼叫。 終結對話框之後,Windows 會使用 nRetCode 的值做為 的傳回值DoModal,以建立對話方塊。

注意

請勿呼叫 EndDialog 來終結無模式對話方塊。 請改為呼叫 CWindow::D estroyWindow

CDialogImpl::GetDialogProc

DialogProc回 ,目前的對話框程式。

virtual WNDPROC GetDialogProc();

傳回值

目前的對話框程式。

備註

覆寫此方法,以您自己的方式取代對話框程式。

CDialogImpl::MapDialogRect

將指定矩形的對話框單位轉換為螢幕單位(圖元)。

BOOL MapDialogRect(LPRECT lpRect);

參數

lpRect
CRect指向物件或 RECT 結構,該結構會接收包含更新區域的更新用戶端座標。

傳回值

如果更新成功,則為非零;如果更新失敗,則為 0。 若要取得延伸錯誤資訊,請呼叫 GetLastError

備註

函式會將指定 RECT 結構中的座標取代為已轉換的座標,讓結構可用來建立對話框或將控件置於對話框中。

CDialogImpl::OnFinalMessage

在收到最後一則訊息之後呼叫 (通常是 WM_NCDESTROY)。

virtual void OnFinalMessage(HWND hWnd);

參數

hWnd
[in]正在終結之視窗的句柄。

備註

請注意,如果您想要在視窗解構時自動刪除物件,您可以在這裡呼叫 delete this

CDialogImpl::StartDialogProc

在收到第一則訊息時,只呼叫一次,以處理傳送至對話框的訊息。

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

參數

hWnd
[in]對話框的句柄。

uMsg
[in]傳送至對話框的訊息。

wParam
[in]其他訊息特定資訊。

lParam
[in]其他訊息特定資訊。

傳回值

視窗程式。

備註

初始呼叫 StartDialogProc之後, DialogProc 會設定為對話框程式,然後進一步呼叫。

另請參閱

BEGIN_MSG_MAP
類別概觀