AfxOleRegisterControlClass

注册 windows 注册数据库中的控件类。

BOOL AFXAPI AfxOleRegisterControlClass(
   HINSTANCE hInstance,
   REFCLSID clsid,
   LPCTSTR pszProgID,
   UINT idTypeName,
   UINT idBitmap,
   int nRegFlags,
   DWORD dwMiscStatus,
   REFGUID tlid,
   WORD wVerMajor,
   WORD wVerMinor 
);

参数

  • hInstance
    模块的实例句柄与控件类。

  • clsid
    控件的单个类 ID。

  • pszProgID
    控件的唯一程序 ID。

  • idTypeName
    包含该控件的用户可读的类型名称字符串的资源 ID。

  • idBitmap
    用于的位图的资源 ID 表示在工具栏或调色板的 OLE 控件。

  • nRegFlags
    包含以下一个或多个标志:

    • afxRegInsertable 允许控件显示 OLE 对象插入对象对话框。

    • afxRegApartmentThreading 设置注册表中的线程处理模型设置为 ThreadingModel=Apartment。

    • afxRegFreeThreading 设置注册表中的线程处理模型设置为 ThreadingModel=Free。

      可以合并两个标志 afxRegApartmentThreadingafxRegFreeThreading 设置 ThreadingModel=Both。在参见 Windows SDK 的 InprocServer32 有关线程模型注册的更多信息。

    说明说明

    在 MFC 4.2 版之前的 MFC 版本, intnRegFlags 参数是 BOOL 参数, bInsertable,允许或禁止插入对象对话框将插入的控件。

  • dwMiscStatus
    包含一个或多个以下状态标志 (有关标志的说明,请参见。 Windows SDK的 OLEMISC 枚举):

    • OLEMISC_RECOMPOSEONRESIZE

    • OLEMISC_ONLYICONIC

    • OLEMISC_INSERTNOTREPLACE

    • OLEMISC_STATIC

    • OLEMISC_CANTLINKINSIDE

    • OLEMISC_CANLINKBYOLE1

    • OLEMISC_ISLINKOBJECT

    • OLEMISC_INSIDEOUT

    • OLEMISC_ACTIVATEWHENVISIBLE

    • OLEMISC_RENDERINGISDEVICEINDEPENDENT

    • OLEMISC_INVISIBLEATRUNTIME

    • OLEMISC_ALWAYSRUN

    • OLEMISC_ACTSLIKEBUTTON

    • OLEMISC_ACTSLIKELABEL

    • OLEMISC_NOUIACTIVATE

    • OLEMISC_ALIGNABLE

    • OLEMISC_IMEMODE

    • OLEMISC_SIMPLEFRAME

    • OLEMISC_SETCLIENTSITEFIRST

  • tlid
    控件类的唯一 ID。

  • wVerMajor
    控件类的主版本号。

  • wVerMinor
    控件类的次版本号。

返回值

非零,则控件类注册为;否则为 0。

备注

这使得控件都可识别的 OLE 控件的容器使用。AfxOleRegisterControlClass 更新与控件的名称的系统的注册表和位置并将控件在注册表中支持的线程模型。有关更多信息,请参见 技术说明 64、 “(sta) 模型线程处理在 OLE 控件,”和 有关进程和线程 在 Windows SDK。

示例

// Member function implementation of class COleObjectFactory::UpdateRegistry 
//
BOOL CMyAxCtrl::CMyAxCtrlFactory::UpdateRegistry(BOOL bRegister)
{
    // TODO: Verify that your control follows apartment-model threading rules.
    // Refer to MFC TechNote 64 for more information.
    // If your control does not conform to the apartment-model rules, then
    // you must modify the code below, changing the 6th parameter from
    // afxRegInsertable | afxRegApartmentThreading to afxRegInsertable.

    if (bRegister)
        return AfxOleRegisterControlClass(
            AfxGetInstanceHandle(),
            m_clsid,
            m_lpszProgID,
            IDS_NVC_MFCAXCTL,
            IDB_NVC_MFCAXCTL,
            afxRegInsertable | afxRegApartmentThreading,
            _dwMyOleMisc,
            _tlid,
            _wVerMajor,
            _wVerMinor);
    else
        return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
}

上面的示例演示 AfxOleRegisterControlClass 如何结合调用带可插入的标志和单元模型的 ORed 标记来创建第六个参数:

            afxRegInsertable | afxRegApartmentThreading,

控件中启用容器的插入对象将出现对话框,并且,它将是设计识别的单元。单元模型识别控件必须确保静态类数据受到锁定保护,,因此,当在一个单元的控件访问静态数据时,不要将该计划程序禁用,在完成之前,因此,同一类的另一个实例启动使用相同的静态数据。对静态数据的所有访问将由临界区代码括起来。

要求

Header: <afxctl.h>

请参见

参考

AfxOleRegisterPropertyPageClass

AfxOleRegisterTypeLib

AfxOleUnregisterClass

AfxOleUnregisterTypeLib

概念

MFC宏和Globals