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

29,239

Solution 1

afxcomctl32.h is a wrong place I think, to fix this problem make your stdafx.h looking like this:

// 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

Solution 2

Try adding this to the TOP of your StdAfx.h file:

#include <sdkddkver.h>

In my application, I'm defining

_WIN32_WINNT=_WIN32_WINNT_WINXP

At first I had the same problem. I discovered that because when you use MFC, you're not allowed to include windows.h, _WIN32_WINNT_WINXP is never defined and so _WIN32_WINNT didn't have a valid value. By including the header that windows.h uses to define those values (sdkddkver.h), suddenly everything works!

Blech. I hate programming for Windows.

Solution 3

You don't need to modify afxcomctl32.h. You just need to include Windows.h before this file.

Should work.

Share:
29,239
Alexander Mashin
Author by

Alexander Mashin

Updated on February 10, 2020

Comments

  • Alexander Mashin
    Alexander Mashin about 4 years

    I create MFC project in VS2010(windows xp). And i take this error:

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

    if I added in afxcomctl32.h: #define _WIN32_WINNT 0x0501, i take 60+ errors. In project i dont added anything. Use such as Visual Studio created. What i need to do with this?

  • Leo Chapiro
    Leo Chapiro over 11 years
    Sure you have pasted this on the very first place in stdafx.h?
  • swdev
    swdev about 10 years
    Works for me! thanks @duDE! (now, that's is an affirmative username!)