COccManager 类

管理多个自定义控件站点;通过 COleControlContainerCOleControlSite 对象实现。

语法

class COccManager : public CNoTrackObject

成员

公共方法

名称 描述
COccManager::CreateContainer 创建一个 COleContainer 对象。
COccManager::CreateDlgControls 创建由关联的 COleContainer 对象托管的 ActiveX 控件。
COccManager::CreateSite 创建一个 COleClientSite 对象。
COccManager::GetDefBtnCode 检索默认按钮的代码。
COccManager::IsDialogMessage 确定对话框消息的目标。
COccManager::IsLabelControl 确定指定的控件是否为标签控件。
COccManager::IsMatchingMnemonic 确定当前助记键是否与指定控件的助记键匹配。
COccManager::OnEvent 尝试处理指定的事件。
COccManager::PostCreateDialog 释放对话框创建期间分配的资源。
COccManager::PreCreateDialog 处理 ActiveX 控件的对话框模板。
COccManager::SetDefaultButton 切换指定的控件的默认状态。
COccManager::SplitDialogTemplate 将任何现有 ActiveX 控件与指定对话框模板中的常见控件分开。

备注

基类 CNoTrackObject 是未记录的基类(位于 AFXTLS.H 中)。 派生自 CNoTrackObject 类的类旨在供 MFC 框架使用,免于接受内存泄漏检测。 不建议直接从 CNoTrackObject 派生。

继承层次结构

CNoTrackObject

COccManager

要求

标头:afxocc.h

COccManager::CreateContainer

由框架调用以创建控件容器。

virtual COleControlContainer* CreateContainer(CWnd* pWnd);

参数

pWnd
指向与自定义站点容器关联的窗口对象的指针。

返回值

返回指向新建容器的指针;否则返回 NULL。

备注

有关创建自定义站点的详细信息,请参阅 COleControlContainer::AttachControlSite

COccManager::CreateDlgControls

调用此函数可创建 pOccDialogInfo 参数指定的 ActiveX 控件

virtual BOOL CreateDlgControls(
    CWnd* pWndParent,
    LPCTSTR lpszResourceName,
    _AFX_OCC_DIALOG_INFO* pOccDialogInfo);

virtual BOOL CreateDlgControls(
    CWnd* pWndParent,
    void* lpResource,
    _AFX_OCC_DIALOG_INFO* pOccDialogInfo);

参数

pWndParent
指向对话框对象的父级的指针。

lpszResourceName
要创建的资源的名称。

pOccDialogInfo
指向用于创建对话框对象的对话框模板的指针。

lpResource
指向资源的指针。

返回值

如果控件创建成功,则返回非零值;否则返回零。

COccManager::CreateSite

由框架调用以创建由 pCtrlCont 指向的容器托管的控件站点

virtual COleControlSite* CreateSite(COleControlContainer* pCtrlCont);

参数

pCtrlCont
指向托管新控件站点的控件容器的指针。

返回值

指向新建的控件站点的指针。

注解

使用 COleControlSite 派生类重写此函数以创建自定义控件站点。

每个控件容器可以托管多个站点。 通过多次调用 CreateSite 创建更多站点。

COccManager::GetDefBtnCode

调用此函数可确定控件是否为默认按钮。

static DWORD AFX_CDECL GetDefBtnCode(CWnd* pWnd);

参数

pWnd
包含按钮控件的窗口对象。

返回值

以下值之一:

  • DLGC_DEFPUSHBUTTON 控件是对话框中的默认按钮。

  • DLGC_UNDEFPUSHBUTTON 控件不是对话框中的默认按钮。

  • 0 控件不是按钮

COccManager::IsDialogMessage

由框架调用以确定消息是否针对指定的对话框,如果是,则处理该消息。

virtual BOOL IsDialogMessage(
    CWnd* pWndDlg,
    LPMSG lpMsg);

参数

pWndDlg
指向消息的预期目标对话框的指针。

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

返回值

如果消息已处理,则返回非零值;否则返回零。

注解

IsDialogMessage 的默认行为是检查键盘消息并将其转换为相应对话框的选项。 例如,按下 TAB 键时会选择下一个控件或控件组。

重写此函数可为发送到指定对话框的消息提供自定义行为。

COccManager::IsLabelControl

调用此函数可确定指定的控件是否为标签控件。

static BOOL AFX_CDECL IsLabelControl(CWnd* pWnd);
static BOOL AFX_CDECL IsLabelControl(COleControlSiteOrWnd* pWnd);

参数

pWnd
指向包含控件的窗口的指针。

返回值

如果控件是标签,则返回非零值;否则返回零

备注

标签控件充当排序顺序中任何下一个控件的标签。

COccManager::IsMatchingMnemonic

调用此函数可确定当前助记键是否与控件表示的助记键匹配。

static BOOL AFX_CDECL IsMatchingMnemonic(
    CWnd* pWnd,
    LPMSG lpMsg);

static BOOL AFX_CDECL IsMatchingMnemonic(
    COleControlSiteOrWnd* pWnd,
    LPMSG lpMsg);

参数

pWnd
指向包含控件的窗口的指针。

lpMsg
指向包含要匹配的助记键的消息的指针。

返回值

如果助记键与控件匹配,则返回非零值;否则返回零

备注

COccManager::OnEvent

由框架调用以处理指定的事件。

virtual BOOL OnEvent(
    CCmdTarget* pCmdTarget,
    UINT idCtrl,
    AFX_EVENT* pEvent,
    AFX_CMDHANDLERINFO* pHandlerInfo);

参数

pCmdTarget
指向尝试处理事件的 CCmdTarget 对象的指针

idCtrl
控件的资源 ID。

pEvent
正在处理的事件。

pHandlerInfo
如果不为 NULL,则 OnEvent 填充 AFX_CMDHANDLERINFO 结构的 pTargetpmf 成员,而不是调度命令。 此参数通常应为 NULL。

返回值

如果事件已处理,则返回非零值,否则返回零。

备注

重写此函数可自定义默认事件处理过程。

COccManager::PreCreateDialog

由框架调用,以在创建实际对话框之前处理 ActiveX 控件的对话框模板。

virtual const DLGTEMPLATE* PreCreateDialog(
    _AFX_OCC_DIALOG_INFO* pOccDialogInfo,
    const DLGTEMPLATE* pOrigTemplate);

参数

pOccDialogInfo
一个 _AFX_OCC_DIALOG_INFO 结构,其中包含有关对话框模板和对话框托管的任何 ActiveX 控件的信息。

pOrigTemplate
指向用于创建对话框的对话框模板的指针。

返回值

指向用于创建对话框的对话框模板结构的指针。

注解

默认行为调用 SplitDialogTemplate,确定是否存在任何 ActiveX 控件,然后返回得到的对话框模板。

重写此函数可自定义托管 ActiveX 控件的对话框的创建过程。

COccManager::PostCreateDialog

由框架调用以释放分配给对话框模板的内存。

virtual void PostCreateDialog(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);

参数

pOccDialogInfo
一个 _AFX_OCC_DIALOG_INFO 结构,其中包含有关对话框模板和对话框托管的任何 ActiveX 控件的信息。

注解

此内存是通过调用 SplitDialogTemplate 分配的,用于对话框中托管的任何 ActiveX 控件。

重写此函数可自定义清理对话框对象使用的任何资源的过程。

COccManager::SetDefaultButton

调用此函数可将控件设置为默认按钮。

static void AFX_CDECL SetDefaultButton(
    CWnd* pWnd,
    BOOL bDefault);

参数

pWnd
指向包含控件的窗口的指针。

bDefault
如果控件应成为默认按钮,则为非零值;否则为零。

返回值

如果成功,则不为零,否则为零。

备注

注意

必须为控件设置 OLEMISC_ACTSLIKEBUTTON 状态位。 有关 OLEMISC 标志的详细信息,请参阅 Windows SDK 中的 OLEMISC 主题。

COccManager::SplitDialogTemplate

由框架调用以将 ActiveX 控件与常见对话框控件分开。

virtual DLGTEMPLATE* SplitDialogTemplate(
    const DLGTEMPLATE* pTemplate,
    DLGITEMTEMPLATE** ppOleDlgItems);

参数

pTemplate
指向要检查的对话框模板的指针。

ppOleDlgItems
指向用作 ActiveX 控件的对话框项的指针列表。

返回值

指向仅包含非 ActiveX 控件的对话框模板结构的指针。 如果不存在任何 ActiveX 控件,则返回 NULL。

注解

如果找到任何 ActiveX 控件,则分析模板并创建仅包含非 ActiveX 控件的新模板。 在此过程中发现的任何 ActiveX 控件都将添加到 ppOleDlgItems

如果模板中没有任何 ActiveX 控件,则返回 NULL

注意

为新模板分配的内存将在 PostCreateDialog 函数中释放。

重写此函数可自定义此过程。

另请参阅

层次结构图
COleControlSite 类
COleControlContainer 类