2012-08-14 34 views
5

是否有一个新的宏在代码中确定应用程序是否在WinRT上运行?由于我与LoadLibrary工作,这将是巨大的,如果有一到LoadPackagedLibrary更换所有呼叫LoadLibrary宏...宏认可WinRT?

我理解正确的文件中我可以加载任何DLL(如只要它在我的包里面)通过LoadPackagedLibrary,对吗?! (并且只要该DLL不使用黑名单API ...)

+0

你是说像#如果NETFX_CORE ? – 2012-08-14 22:36:11

+0

对不起,我想这是针对.NET的。也许对于C++,你可以使用[WINAPI_FAMILY](http://stackoverflow.com/questions/9509166/what-is-winapifamily-h) – 2012-08-14 22:40:14

+0

那么,因为我目前只使用的LoadLibrary相关的东西。所以通过'#if WINAPI_FAMILY WINAPI_FAMILY_APP'我可以确定我是否在WinRT上? – MFH 2012-08-15 00:06:05

回答

4

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

微软头宏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定义一个应该可以认为它是一个地铁应用...

0

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

herehere

1

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

在引言部分

编写应用程序对于Windows应用商店,请使用Windows Runtime (WinRT)以及位于核心API 系列(由WINAPI_FAMILY设置为WINAPI_PARTITION_APP)指定的Win32 API的受限子集。 传统的Win32桌面应用程序可以使用一个更大的桌面API 家庭(由WINAPI_FAMILY表示设为WINAPI_PARTITION_DESKTOP), 但这是受每个 功能所需的操作系统支持各级