COleTemplateServer 类中的 UpdateRegistry 方法用于在注册表中更新服务器对象的信息。通常,这个方法会在应用程序首次运行时被调用,以确保相关的信息被正确注册。

以下是一个简单的示例,演示了如何使用 UpdateRegistry 方法:
#include <afxwin.h>

class CMyApp : public CWinApp
{
public:
    virtual BOOL InitInstance();
    virtual int ExitInstance();
};

class CMyDocTemplate : public COleTemplateServer
{
public:
    CMyDocTemplate(CRuntimeClass* pDocClass, CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass);
    virtual void UpdateRegistry(BOOL bRegister);
};

BOOL CMyApp::InitInstance()
{
    // ...

    // 创建文档模板
    CMyDocTemplate* pDocTemplate = new CMyDocTemplate(
        RUNTIME_CLASS(CDocument), RUNTIME_CLASS(CFrameWnd), RUNTIME_CLASS(CView));
    AddDocTemplate(pDocTemplate);

    // ...

    return TRUE;
}

int CMyApp::ExitInstance()
{
    // 在退出应用程序时,调用 UpdateRegistry 方法以取消注册或注册服务器信息
    ((CMyDocTemplate*)m_pDocManager->m_templateList.GetHead())->UpdateRegistry(FALSE);

    return CWinApp::ExitInstance();
}

CMyDocTemplate::CMyDocTemplate(CRuntimeClass* pDocClass, CRuntimeClass* pFrameClass, CRuntimeClass* pViewClass)
    : COleTemplateServer(pDocClass, pFrameClass, pViewClass)
{
    // 在这里进行模板的连接工作
    // 可以包括注册支持的文档类型、添加工厂类等
    ConnectTemplate(clsidApp, pDocClass, pFrameClass, pViewClass);
}

void CMyDocTemplate::UpdateRegistry(BOOL bRegister)
{
    // 在这里更新注册表信息,根据 bRegister 参数进行注册或取消注册
    // ...

    // 调用基类的 UpdateRegistry 方法
    COleTemplateServer::UpdateRegistry(bRegister);
}

在这个示例中,CMyApp 类继承自 CWinApp,并在 InitInstance 方法中创建了一个文档模板 CMyDocTemplate,该模板继承自 COleTemplateServer。在 ExitInstance 方法中,通过 UpdateRegistry 方法进行注册表信息的更新。

请注意,具体的使用方式可能会根据你的应用程序的需求而有所不同。确保查阅 MFC 的官方文档以获取最准确和最新的信息。


转载请注明出处:http://www.zyzy.cn/article/detail/21587/MFC/COleTemplateServer