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

场景:

我正在尝试将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引用的代码(如果可能).

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

Porting a desktop app to a Metro style app

The Windows Runtime Library (WRL)

点赞