【问题标题】:COM Interface as a param of WinRT ref class, how it possible?COM接口作为WinRT ref类的参数,怎么可能?
【发布时间】:2012-11-09 15:05:06
【问题描述】:

如何正确定义此类:

public ref class WICBMP sealed
{
  void Load(IWICBitmapSource ^wicBitmapSource);
};

【问题讨论】:

  • 尝试没有意义,您的应用将无法通过商店验证。

标签: class com interface windows-runtime param


【解决方案1】:

这是不可能的。声明 Windows 运行时接口的成员时,只能使用 Windows 运行时类型(在这种特定情况下,编译器将需要生成一个接口来声明您的 Load 成员函数)。如果您尝试在 IDL 中定义接口,您甚至无法做到这一点。

运行时类可以实现不是 Windows 运行时接口的 COM 接口。例如,请参阅IBufferByteAccess(COM 接口),所有IBuffer(Windows 运行时接口)实现都必须实现。

【讨论】:

  • 谢谢你,詹姆斯。当然,我不能像我写的那样使用这样的声明。但我可以使用 ComPtr 之类的东西,将接口从应用程序“转移”到库组件吗?
  • 是的,您可以执行与IBufferIBufferByteAccess 类似的操作,如答案中所述。编写一个实现标识的 Windows 运行时接口和 COM 接口的类,以提供对IWICBitmapSource 的访问。您的 WinRT 组件可以使用IMyWinRTInterface 在其公共 API 表面中引用它,然后可以使用 COM 接口的 QueryInterface 来获取实际的IWICBitmapSource
  • 如果您愿意,我可以在星期一提供一个示例。
猜你喜欢
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2015-11-17
相关资源
最近更新 更多