具体的 UpdateRegistry 方法声明如下:
BOOL UpdateRegistry(BOOL bRegister = TRUE);
这个方法返回一个 BOOL 类型的值,表示更新注册表是否成功。如果 bRegister 参数为 TRUE,则表示要将信息注册到系统注册表中;如果为 FALSE,则表示要从系统注册表中移除相应的信息。
通常,这个方法会在对象工厂被创建时调用,以便将相关的信息注册到系统注册表中。同样,当不再需要对象工厂时,也可以调用该方法以移除注册信息。
例如,在 DLL 中可能会这样调用:
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
// 其他初始化代码...
// 在 DLL_PROCESS_ATTACH 阶段注册对象工厂信息
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
AfxOleRegisterFactory(CMyObject::GetRuntimeClass(),
clsidMyObject, // 对象的 CLSID
_T("MyObject"), // 对象的 ProgID
_T("MyObject Class"), // 对象的用户类型
_T("MyObject.Application"), // 与对象关联的应用程序
_T("MyObject.Application.1"), // 版本信息
COleObjectFactory::regtypelibID, // 注册类型
_T("MyObject.TypeLib"), // 类型库的 ProgID
_T("MyObject.TypeLib.1"), // 类型库的版本信息
TRUE); // 多实例对象
// 更新注册表信息
COleObjectFactory::UpdateRegistry();
}
// 其他初始化代码...
return TRUE;
}
通过调用 UpdateRegistry 方法,可以确保在创建对象工厂时将相关的信息注册到系统注册表中,从而使得系统能够正确识别和使用相应的对象。
转载请注明出处:http://www.zyzy.cn/article/detail/21450/MFC/COleObjectFactory