4

场景:
我正在尝试将 C++ 应用程序迁移到 WinRT/Metro 样式。此应用程序使用 ATL/COM 对象,该对象通过使用 IDispatchImpl 类来实现 IDispatch 接口但是,根据 MSDN,IDispatchImpl 不适用于 Metro Style 应用程序。

我的 ATL/COM 类如下所示:

class MyATLClass :
    public IDispatchImpl<IMyDispInterface, &IID_IMyDispInterface, &LIBID_MYLIB, 1, 0>, 
    public CComObjectRoot,
    public CComCoClass<MyATLClass,&CLSID_MyATLClass>
{
    ...
}

问题:
在 WinRT 中是否有 IDispatchImpl 的替代品?

例如,替换可能涉及从不同的类派生并丢弃我的 IDL 文件。我的最终目标只是能够在 MyATLClass 的实例上执行 QueryInterface 并通过 IMyDispInterface 获得引用。我还可以将我的所有文件(库和应用程序)包含在一个项目中,但如果可能的话,我确实希望避免更改使用 IMyDispInterface 引用的代码。

4

1 回答 1

2

在这种情况下,将我的 COM/ATL 类重新实现为基于 WRL 的组件可能是最佳选择(感谢 Larry)。这些视频帖子提供了更多信息:

将桌面应用程序移植到 Metro 风格应用程序

Windows 运行时库 (WRL)

于 2012-07-12T17:49:45.997 回答