什么时候#如果WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DE

2019-07-21 04:42发布

您好我有2个VC ++解决方案“A”和“B”两者都具有相同的基本代码(具有不同的代码只是几行)(VS2008)。 在这两种使用DXVAHD.h。

dxvahd.h是一个标准的Microsoft头文件。 如果我们打开这个头文件中,我们可以看到有一个条件,如果“ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

我看到,在VC ++解决方案“A”,上述条件#如果陈述是错误的,因此整个dxvahd头文件被灰色&甚至不编译!

而在另一种解决方案“B”,这个条件#如果是真实的,因此没有问题和它的工作的罚款。

任何人都可以请让我知道我怎么在溶液中“A”,其中上述#如果是越来越变灰/编译没有解决这个问题。 PLZ帮我。

提前致谢。

Answer 1:

看着winapifamily.h ,你可以看到,这些宏用来确定你有什么平台,什么API的是适合你的平台。

/*
 *  Windows APIs can be placed in a partition represented by one of the below bits.   The 
 *  WINAPI_FAMILY value determines which partitions are available to the client code.
 */

#define WINAPI_PARTITION_DESKTOP   0x00000001
#define WINAPI_PARTITION_APP       0x00000002    

/*
 * A family may be defined as the union of multiple families. WINAPI_FAMILY should be set
 * to one of these values.
 */
#define WINAPI_FAMILY_APP          WINAPI_PARTITION_APP
#define WINAPI_FAMILY_DESKTOP_APP  (WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_APP)    

/*
 * A constant that specifies which code is available to the program's target runtime platform.
 * By default we use the 'desktop app' family which places no restrictions on the API surface. 
 * To restrict the API surface to just the App API surface, define WINAPI_FAMILY to WINAPI_FAMILY_APP.
 */
#ifndef WINAPI_FAMILY
#define WINAPI_FAMILY WINAPI_FAMILY_DESKTOP_APP
#endif

/* Macro to determine if a partition is enabled */
#define WINAPI_FAMILY_PARTITION(Partition)  ((WINAPI_FAMILY & Partition) == Partition)

/* Macro to determine if only one partition is enabled from a set */
#define WINAPI_FAMILY_ONE_PARTITION(PartitionSet, Partition) ((WINAPI_FAMILY & PartitionSet) == Partition)

所以,你的WINAPI_PARTITION_DESKTOP ,如果您是在桌面家庭系统的运行将只设置。



Answer 2:

WINAPI_FAMILY取决于目标Windows版本还设置。

见讨论和链接的博客文章系列 。

特别是,如果你不写一个“应用程序”(时间> =运8),则:

宁愿使用标准的Windows _WIN32_WINNT的定义选择正确的Win32 API(即在Windows Store应用程序的使用需要很多的Win32 API是Vista的(为0x0600),Windows 7中(0x0601),或Windows 8(0x0602)版本。

您可以使用WINVER _WIN32_WINNT或 。



文章来源: When does #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) in dxvahd.h Microsoft header file become true