我们有一个使用旧 MFC GUI 的 C++ 桌面应用程序;现在我们想要一个更现代的触摸 GUI。我们想使用 Windows Metro 应用程序样式。
因为我们使用一些链接共享 mfc 库的 sdk,我们认为我们不能使用这些组件编写 WinRT 应用程序(或者我们错了?)。
是否可以在桌面应用程序中使用 WinRT GUI api(使用纯 C++,没有任何 .net 世界,如 WRL/C++)?
我们看到一些例子,即 using accelerometer WinRT api ,但不是 GUI 组件。
请记住,C++/CX 是纯原生的东西。没有 .NET 依赖项等。它只是简化 COM 互操作的语言扩展(我确定您知道 WinRT 是基于 COM 的 API),但如果您不喜欢 C++/CX,请考虑使用 WRL 进行低级互操作。
C++/CX 的语言扩展可以节省时间,但您不必使用它们。如果使用 Windows 运行时 C++ 模板库 (WRL),则可以从标准 C++ 获得对跨语言互操作的较低级别访问权限。 WRL 使用 COM 程序员熟悉的约定。
WRL 是一种与编译器无关的方式来创建和使用 Windows 运行时 API。您可以使用 WRL 而不是 C++/CX 语法。它使您能够针对性能或特定场景优化代码。它还支持不使用异常的应用程序开发方法。