CAxDialogImpl 类

此类实现托管 ActiveX 控件的(模式或无模式)对话框。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

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

参数

T
你的类,派生自 CAxDialogImpl

TBase
CDialogImplBaseT 的基窗口类。

成员

公共方法

名称 描述
CAxDialogImpl::AdviseSinkMap 调用此方法可在对象的接收器事件映射中建议或不建议所有条目。
CAxDialogImpl::Create 调用此方法以创建无模式对话框。
CAxDialogImpl::DestroyWindow 调用此方法以销毁无模式对话框。
CAxDialogImpl::DoModal 调用此方法以创建模式对话框。
CAxDialogImpl::EndDialog 调用此方法以销毁模式对话框。
CAxDialogImpl::GetDialogProc 调用此方法以获取指向 DialogProc 回调函数的指针。
CAxDialogImpl::GetIDD 调用此方法以获取对话框模板资源 ID
CAxDialogImpl::IsDialogMessage 调用此方法可确定消息是否适用于此对话框,如果是,则处理该消息。

受保护的数据成员

名称 描述
CAxDialogImpl::m_bModal 仅在调试版本中存在的变量,如果对话框为模式,则设置为 true。

备注

CAxDialogImpl 允许你创建模式或无模式对话框。 CAxDialogImpl 提供对话框过程,它使用默认消息映射将消息定向到相应的处理程序。

CAxDialogImpl 派生自 CDialogImplBaseT,后者派生自 TBase(默认情况下,CWindow)和 CMessageMap

类必须定义一个 IDD 成员,该成员指定对话框模板资源 ID。 例如,使用“添加类”对话框添加 ATL Dialog 对象会自动将以下行添加到类:

enum { IDD = IDD_MYDLG };

其中,MyDialog 是 ATL 对话框向导中输入的短名称

有关详细信息,请参阅“实现对话框”

请注意,使用 CAxDialogImpl 创建的模式对话框上的 ActiveX 控件不支持快捷键。 若要支持使用 CAxDialogImpl创建的对话框上的快捷键,请创建无模式对话框,并使用自己的消息循环,在从队列获取消息以处理快捷键后,使用 CAxDialogImpl::IsDialogMessage

有关 CAxDialogImpl 的详细信息,请参阅 ATL 控件包含常见问题解答

继承层次结构

CMessageMap

TBase

CWindowImplRoot

CDialogImplBaseT

CAxDialogImpl

要求

标头:atlwin.h

CAxDialogImpl::AdviseSinkMap

调用此方法可在对象的接收器事件映射中建议或不建议所有条目。

HRESULT AdviseSinkMap(bool bAdvise);

参数

bAdvise
如果推荐所有接收器条目,则设置为 true;如果要取消所有接收器条目,则为 false。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

CAxDialogImpl::Create

调用此方法以创建无模式对话框。

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

参数

hWndParent
[in] 所有者窗口的句柄。

dwInitParam
[in] 在 WM_INITDIALOG 消息的 lParam 参数中指定要传递到对话框的值。

RECT&
未使用此参数。 此参数由 CComControl 传入。

返回值

新创建的对话框的句柄。

注解

此对话框会自动附加到 CAxDialogImpl 对象。 创建模型对话框,调用 DoModal

仅提供第二个替代,以便对话框可用于 CComControl

CAxDialogImpl::DestroyWindow

调用此方法以销毁无模式对话框。

BOOL DestroyWindow();

返回值

如果窗口已成功销毁,则为 TRUE;否则为 FALSE。

备注

请勿调用 DestroyWindow 销毁模式对话框。 请改为调用 EndDialog

CAxDialogImpl::DoModal

调用此方法以创建模式对话框。

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

参数

hWndParent
[in] 所有者窗口的句柄。 默认值为 GetActiveWindow Win32 函数的返回值。

dwInitParam
[in] 在 WM_INITDIALOG 消息的 lParam 参数中指定要传递到对话框的值。

返回值

如果成功,则为调用 EndDialog 中指定的 nRetCode 参数的值;否则为 -1。

备注

此对话框会自动附加到 CAxDialogImpl 对象。

若要创建无模式对话框,请调用 Create

CAxDialogImpl::EndDialog

调用此方法以销毁模式对话框。

BOOL EndDialog(int nRetCode);

参数

nRetCode
[in] 由 DoModal 返回的值。

返回值

如果对话框被销毁,则为 TRUE;否则为 FALSE。

注解

EndDialog 必须通过对话框过程调用。 销毁对话框后,Windows 将使用 nRetCode 的值作为创建了对话框的 DoModal 的返回值。

注意

请勿调用 EndDialog 销毁无模式对话框。 请改为调用 DestroyWindow

CAxDialogImpl::GetDialogProc

调用此方法以获取指向 DialogProc 回调函数的指针。

virtual DLGPROC GetDialogProc();

返回值

返回指向 DialogProc 回调函数的指针。

备注

DialogProc 函数是应用程序定义的回调函数。

CAxDialogImpl::GetIDD

调用此方法以获取对话框模板资源 ID。

int GetIDD();

返回值

返回对话框模板资源 ID。

CAxDialogImpl::IsDialogMessage

调用此方法可确定消息是否适用于此对话框,如果是,则处理该消息。

BOOL IsDialogMessage(LPMSG pMsg);

参数

pMsg
指向包含要检查的消息的 MSG 结构的指针。

返回值

如果消息已处理,则返回 TRUE;否则返回 FALSE。

备注

此方法旨在从消息循环中调用。

CAxDialogImpl::m_bModal

仅在调试版本中存在的变量,如果对话框为模式,则设置为 true。

bool m_bModal;

另请参阅

CDialogImpl 类
类概述