WinRT / Metro Style App中基于ATL的COM对象

时间:2012-07-11 15:54:18

标签: c++ com microsoft-metro windows-runtime atl

情境:
我正在尝试将C ++应用程序迁移到WinRT / Metro Style。此应用程序使用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>
{
    ...
}

问题:
WinispT中是否有替代IDispatchImpl?

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

1 个答案:

答案 0 :(得分:2)

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

Porting a desktop app to a Metro style app

The Windows Runtime Library (WRL)