MFC 代码
要包括两个头文件
#include <ComCat.h>
#include <ObjSafe.h>
// 注册组件时加入颜色代码
STDAPI DllRegisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG_E_CLASS);
ICatRegister* pcr = NULL ;
HRESULT hr = S_OK ;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL, CLSCTX_INPROC_SERVER,
IID_ICatRegister,
(void**)&pcr);
if (SUCCEEDED(hr))
{
// Register this category as being "implemented" by the class.
CATID rgcatid[2] ;
rgcatid[0] = CATID_SafeForInitializing;
rgcatid[1] = CATID_SafeForScripting;
hr = pcr-> RegisterClassImplCategories(_tlid, 2, rgcatid);
}
if (pcr != NULL)
pcr-> Release();
return hr;
}
// 卸载组件时
STDAPI DllUnregisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
ICatRegister* pcr = NULL ;
HRESULT hr = S_OK ;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL, CLSCTX_INPROC_SERVER,
IID_ICatRegister,
(void**)&pcr);
if (SUCCEEDED(hr))
{
// Unregister this category as being "implemented" by the class.
CATID rgcatid[2] ;
rgcatid[0] = CATID_SafeForInitializing;
rgcatid[1] = CATID_SafeForScripting;
hr = pcr-> UnRegisterClassImplCategories(_tlid, 1, rgcatid);
}
if (pcr != NULL)
pcr-> Release();
if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
return ResultFromScode(SELFREG_E_CLASS);
return NOERROR;
}
要包括两个头文件
#include <ComCat.h>
#include <ObjSafe.h>
// 注册组件时加入颜色代码
STDAPI DllRegisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG_E_CLASS);
ICatRegister* pcr = NULL ;
HRESULT hr = S_OK ;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL, CLSCTX_INPROC_SERVER,
IID_ICatRegister,
(void**)&pcr);
if (SUCCEEDED(hr))
{
// Register this category as being "implemented" by the class.
CATID rgcatid[2] ;
rgcatid[0] = CATID_SafeForInitializing;
rgcatid[1] = CATID_SafeForScripting;
hr = pcr-> RegisterClassImplCategories(_tlid, 2, rgcatid);
}
if (pcr != NULL)
pcr-> Release();
return hr;
}
// 卸载组件时
STDAPI DllUnregisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
ICatRegister* pcr = NULL ;
HRESULT hr = S_OK ;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
NULL, CLSCTX_INPROC_SERVER,
IID_ICatRegister,
(void**)&pcr);
if (SUCCEEDED(hr))
{
// Unregister this category as being "implemented" by the class.
CATID rgcatid[2] ;
rgcatid[0] = CATID_SafeForInitializing;
rgcatid[1] = CATID_SafeForScripting;
hr = pcr-> UnRegisterClassImplCategories(_tlid, 1, rgcatid);
}
if (pcr != NULL)
pcr-> Release();
if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
return ResultFromScode(SELFREG_E_CLASS);
return NOERROR;
}