我在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创建的。
我需要做些什么?
答案 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中的标准不同。