什么是_WIN32_WINNT以及它是如何工作的?

时间:2013-02-27 12:09:56

标签: c++ winapi windows-7

编辑2:好的,所以我改为Orwell DevC ++,其中包含“winnt.h”,其中包含 #define KEY_WOW64_64KEY 0x0100 ,但它仍然无效。 (参见编辑1:)

编辑1:我查看了CodeBlock和DevC ++中出现的“winnt.h”,而DevC ++缺少以下几行:

#if (_WIN32_WINNT >= 0x0502)
#define KEY_WOW64_64KEY 0x0100
#define KEY_WOW64_32KEY 0x0200
#endif

将上述代码放在DevC ++的wint.h中不起作用。


原帖: 我有一个32位应用程序(在DevC ++和Windows 7 64位开发),它读取64位应用程序的注册表作为其任务之一,所以我试图在RegOpenKeyEx中使用“KEY_WOW64_64KEY”标志,并发现很少有关于如何使用_WIN32_WINNT的帖子:thisthis

当我在CodeBlock项目(测试项目)中使用它时,它就像魅力一样,但是相同的代码不能与DevC ++一起使用,我现在无法将其移植到代码块,因为代码块会出现其他问题。

如何使用DevC ++?

由于

2 个答案:

答案 0 :(得分:10)

它定义了要使用的Windows头文件的版本。必须在#include <Windows.h>之前声明它。

如果你要修改它,你应该设置一些其他类似的变量:

MSDN Using Windows Headers

答案 1 :(得分:1)

  1. _WIN32_WINNT是一个预处理程序令牌,在(0x0601)使用_WIN32_WINNT时会被_WIN32_WINNT替换。预处理器只扫描整个文件,并在找到它的任何地方用(0x0601)替换ifdef
  2. 可能有#ifdef _WIN32_WINNT #define KEY32 32 #endif 个预处理器防护装置可以启用/禁用预处理器常量。喜欢:

    KEY32

    在那里,_WIN32_WINNT只会定义 IF {{1}}。

    1. 它已经与DevC ++一起使用了。