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 控件包含常见问题解答。
继承层次结构
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;