宏识别WinRT?

时间:2012-08-14 22:30:27

标签: c++ windows-8 windows-runtime

是否有新宏在代码中确定应用程序是否在WinRT上运行?当我正在使用LoadLibrary时,如果有一个宏将LoadLibrary的所有调用替换为LoadPackagedLibrary,则会很棒...

我理解文档是正确的,因为我可以通过LoadPackagedLibrary加载任何DLL(只要它在我的包中),对吧?! (只要该DLL不使用黑名单的API ......)

3 个答案:

答案 0 :(得分:4)

我最近更新到Visual Studio 2012,并认为我找到了问题的答案:

在Microsoft标头内部,宏WINAPI_FAMILY_PARTITION用于确定WinAPI的“级别”。目前有WINAPI_PARTITION_DESKTOPWINAPI_PARTITION_APP,因此我“猜测”通过此宏可以区分桌面和地铁......

这两个宏导致另一组宏:#define WINAPI_FAMILY_APP WINAPI_PARTITION_APP#define WINAPI_FAMILY_DESKTOP_APP (WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_APP)。因此,如果定义WINAPI_FAMILY_APP,则应该能够假设它是Metro应用程序......

答案 1 :(得分:2)

要添加回答,请参阅此文Dual-use Coding Techniques for Games

在介绍部分

  

为Windows应用商店编写的应用程序使用Windows运行时   (WinRT)和位于核心API中的Win32 API的受限子集   family(由WINAPI_FAMILY指示设置为WINAPI_PARTITION_APP)。   传统的Win32桌面应用程序可以访问更大的桌面API   family(由WINAPI_FAMILY指示设置为WINAPI_PARTITION_DESKTOP),   但是这需要各自所需的各种级别的OS支持   功能

答案 2 :(得分:0)

试试__WRL_WINRT_STRICT__。不完全确定这是正确的,但如果你去查看那个文件它可能会有你想要的。

来自herehere