我尝试重构现有的和工作的COM 事件接收器实现。事件接收器类是用 C++ 编写的,驻留在使用已弃用CComModule
类的 DLL 中。重构的目标是用CComModule
新的 ATL 7.0 类CAtlComModule 替换。
现有实现在 .cpp 文件中的某处声明了一个全局变量:
CComModule _Module;
如您所见,该变量具有通常的“魔术”名称_Module
。但是,缺少常规初始化,DLL 项目中没有任何地方调用CComModule::Init()
并且也没有 COM 对象映射。事件接收器仍然有效,它的事件处理程序方法被正确调用。
由于缺乏如何从 to 转换的任何文档CComModule
,CAtlComModule
我天真地试图将变量声明更改为:
CAtlComModule _Module;
但它没有成功:更改后事件接收器停止工作,即不再调用其事件处理程序方法。
有谁知道迁移到应该执行的步骤CAtlComModule
?到目前为止,我无法在 MSDN 或通过 Google 上找到解决方案,但也许我看起来不太正确......
BTW:如有必要,我可以提供有关事件接收器实现的更多细节,但到目前为止我觉得问题不在这方面。