2015-04-06 66 views
2

我们有一个使用旧的MFC GUI的C++桌面应用程序;现在我们想要有一个更现代的触摸GUI。我们想使用Windows Metro App风格。
因为我们使用一些链接共享mfc库的sdk,我们认为我们不能使用这些组件编写WinRT应用程序(或者我们错了?)。
桌面应用程序中的WinRT GUI

是否有可能在桌面应用程序中使用WinRT GUI API(纯C++没有.net世界的任何东西,如WRL/C++)?
我们看到一些例子,即using accelerometer WinRT api,但不是GUI组件。

+1

这是一个完美的有效问题。为什么这是封闭的。这个闭幕式的法西斯真的开始糟透了。 答案是:不 - 你不能混用WinRT GUI和普通的Win32 GUI。而且我不认为WinRT目前足够好来移植它。上面提到的原因是,由于所有这些老的Win32 windows消息都没有人愿意破解,因此Win32是不可改进的,因此他们在它之上创建了一个新的级别。但像往常一样,MS在这次任务中停下了脚步,留给我们的是Cocoa可用性更低的东西。 – Lothar

回答

1

请记住,C++/CX是纯原生的东西。没有.NET依赖关系等等。它只是一个简化COM互操作的语言扩展(我相信你知道WinRT是基于COM的API),但是如果你不喜欢C++/CX,可以考虑将WRL用于低级别互操作。

C++/CX的语言扩展保存时间,但您不必使用它们。如果使用Windows运行时C++模板库(WRL),则可以从标准C++获得跨语言互操作的较低级别访问权限。 WRL使用COM程序员熟悉的约定。

WRL是一种编译器不可知的方式来创建和使用Windows运行时API。您可以使用WRL而不是C++/CX语法。它使您能够针对性能或特定场景优化代码。它还支持不使用异常的应用程序开发方法。