在 MFC(Microsoft Foundation Classes)中,COleObjectFactory 类的 UpdateRegistry 方法用于将与对象工厂关联的对象的信息更新到系统注册表中。

具体的 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