Compile Errors upgrading ATL project from vs2010 to vs2013

atl, c++, visual-studio-2010, visual-studio-2013

Solution

As this is a very old legacy project the problem is with the targeted version of windows in the stdafx.h file

from MSDN

Visual C++ no longer supports targeting Windows 95, Windows 98, Windows ME, or Windows NT. If your WINVER or _WIN32_WINNT macros are assigned to one of these versions of Windows, you must modify the macros. When you upgrade a project that was created by using an earlier version of Visual C++, you may see compilation errors related to the WINVER or _WIN32_WINNT macros if they are assigned to a version of Windows that is no longer supported.

So, changing

#ifndef WINVER  
#define WINVER 0x0400   
#endif

to

#ifndef WINVER  
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
#endif

corrects the build problem

Problem

When including atlwin.h from the Microsoft ATL libraries in Visual Studio 2013 building may result in numerous complier errors about undefined elements. ``` HMONITOR is not defined ``` This does not occur when building using VS2010. As this is a standard MS header file the missing class errors do not seems to make sense.

Original source