注册 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。
可以合并两个标志 afxRegApartmentThreading 和 afxRegFreeThreading 设置 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