错误C1189:#error:此文件要求_WIN32_WINNT #defined至少为0x0500。建议值为0x0501或更高

时间:2013-02-01 10:12:20

标签: c++ windows visual-studio-2010 mfc

我在VS2010(windows xp)中创建MFC项目。我接受了这个错误:

error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0500. Value 0x0501 or higher is recommended. 

如果我添加了afxcomctl32.h#define _WIN32_WINNT 0x0501,我会犯60多个错误。 在项目中,我没有添加任何东西。使用诸如Visual Studio创建的。 我需要做些什么?

4 个答案:

答案 0 :(得分:22)

afxcomctl32.h我认为是一个错误的地方,解决这个问题让你的stdafx.h看起来像这样:

// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER                // Allow use of features specific to Windows 95 and Windows NT 4 or later.
#define WINVER 0x0501        // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif

#ifndef _WIN32_WINNT        // Allow use of features specific to Windows NT 4 or later.
#define _WIN32_WINNT 0x0501        // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif                        

#ifndef _WIN32_WINDOWS        // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0501 // Change this to the appropriate value to target Windows Me or later.
#endif

#ifndef _WIN32_IE            // Allow use of features specific to IE 4.0 or later.
#define _WIN32_IE 0x0500    // Change this to the appropriate value to target IE 5.0 or later.
#endif

答案 1 :(得分:3)

尝试将其添加到StdAfx.h文件的顶部:

#include <sdkddkver.h>

在我的申请中,我正在定义

_WIN32_WINNT=_WIN32_WINNT_WINXP

起初我遇到了同样的问题。我发现因为当你使用MFC时,你不允许包含windows.h,_WIN32_WINNT_WINXP 从未被定义,因此_WIN32_WINNT没有有效值。通过包含windows.h用于定义这些值的标头(sdkddkver.h),突然一切正常!

布莱什。我讨厌Windows的编程。

答案 2 :(得分:1)

您无需修改​​afxcomctl32.h。您只需要在此文件之前包含Windows.h。

应该工作。

答案 3 :(得分:0)

我解决了我的问题。事实是文件atmcore.h与VS2010中的标准不同。