你是否只能使用“Metro-style”应用程序和Windows Store应用程序?
起初,我认为C++/CX会是C++/CLI的一个很好的替代品,因为它有一些漂亮的C#风格的关键字('sealed','partial'),并且它也编译成本地代码,而不是使用.NET。但在网上阅读时,我发现所有的信息都涉及到Windows Store应用程序和Metro-styled应用程序...
另外,WinRT只适用于Windows 8及以上版本吗?
你是否只能使用“Metro-style”应用程序和Windows Store应用程序?
起初,我认为C++/CX会是C++/CLI的一个很好的替代品,因为它有一些漂亮的C#风格的关键字('sealed','partial'),并且它也编译成本地代码,而不是使用.NET。但在网上阅读时,我发现所有的信息都涉及到Windows Store应用程序和Metro-styled应用程序...
另外,WinRT只适用于Windows 8及以上版本吗?
是的,您可以使用C++/Cx编写桌面应用程序,并可以在桌面应用程序中使用一些Windows Runtime API(在文档和头文件中标记为可用于桌面应用程序)。请参见桌面应用程序的Windows Runtime API。MSDN上的枚举应用程序包示例演示了在桌面应用程序中使用C++/Cx调用Windows Runtime API。
Windows Runtime Xaml类不适用于桌面应用程序,但由于您可以混合使用C++和C++/Cx,因此可以从应用程序中调用典型的桌面UI API(Win32、MFC、DirectX等),该应用程序还使用C++/Cx。
C++/Cx不是C++/CLI的替代品。除了使用一些类似的语法之外,它们有非常不同的目标。正如您所指出的那样,C++/Cx不是托管语言,因此不能用于调用托管代码。选择C++/CLI的主要原因是与托管代码的互操作性。如果您需要从桌面应用程序调用Windows Runtime,则C++/Cx是一个很好的选择。
Windows Runtime仅适用于Windows 8及更高版本。
C++/CX的维基百科页面第一行是:
C++/CX(组件扩展)是微软为C++编译器开发的语言扩展,使C++程序员能够为新的Windows Runtime平台或WinRT编写程序。(重点添加)
因此,C++/CX似乎就像C++/CLI对于.Net/CLR一样对应于WinRT。也就是说,C++/CX用于使用WinRT编写Windows应用程序。WinRT适用于Windows 8商店和Metro应用程序。
您可以使用C++编写常规的Windows API应用程序,因此您可能也可以在C++/CX中执行相同的操作。但这可能不容易或不可能,但由于扩展是针对WinRT特定的,所以为什么要这样做呢?将C++/CX生成不依赖于WinRT的可执行文件是问题的关键。
这篇SO的帖子表明WinRT只适用于Windows 8。(很可能也适用于Windows 10。)