首页 > 解决方案 > 关于 ATL 140 ,这是 DECLARE_REGISTRY 中的错字吗?

问题描述

我正在使用 ATL 140 编写一个 com 组件,并在我的组件主体中使用此宏

#define DECLARE_REGISTRY(class, pid, vpid, nid, flags)\
    static HRESULT WINAPI UpdateRegistry(_In_ BOOL bRegister) throw()\
    {\
        return _Module.UpdateRegistryClass(GetObjectCLSID(), pid, vpid, nid,\
            flags, bRegister);\
    }

UpdateRegistry有一个引用_Module并且它必须是 a CComModule,因为只有这个类有这个UpdateRegistryClass方法。但是根据文档,CComModule已弃用。那么我应该声明_Module为我的模块并复制UpdateRegistryClass并粘贴到我的模块吗?非常感谢!

struct MyModule : CAtlExeModuleT<MyModule>
{
  HRESULT WINAPI UpdateRegistryClass(...){...};
};
...
MyModule _Module;

标签: atl

解决方案


推荐阅读