'GetConsoleWindow'未在此范围内声明?

时间:2013-11-16 10:42:43

标签: c++ windows winapi windows-console

#include<windows.h>已经添加了,那么为什么GCC-mingw32编译器会报告'GetConsoleWindow' was not declared in this scope

这是我的代码:

#include<iostream>
#include<cmath>
#include<windows.h>

using namespace std;

#define PI 3.14

int main() 
{
    //Get a console handle
    HWND myconsole = GetConsoleWindow();
    //Get a handle to device context
    HDC mydc = GetDC(myconsole);

    int pixel =0;

    //Choose any color
    COLORREF COLOR= RGB(255,255,255); 

    //Draw pixels
    for(double i = 0; i < PI * 4; i += 0.05)
    {
        SetPixel(mydc,pixel,(int)(50+25*cos(i)),COLOR);
        pixel+=1;
    }

    ReleaseDC(myconsole, mydc);
    cin.ignore();
    return 0;
}

感谢。 ^^

3 个答案:

答案 0 :(得分:7)

来自msdn

  

要编译使用此功能的应用程序,请定义_WIN32_WINNT   为0x0500或更高版本。

所以你可以尝试替换

#include<windows.h>

#define _WIN32_WINNT 0x0500
#include<windows.h>

或者包含Windows SDK中的SDKDDKVer.h

  

包括SDKDDKVer.h定义了最高可用的Windows平台。

答案 1 :(得分:5)

documentation说:

  

要编译使用此函数的应用程序,请将_WIN32_WINNT定义为0x0500或更高版本。

我怀疑你没有这样做。

在包含windows.h之前,需要定义条件。请注意,版本0x0500对应于Windows 2000,因此,如果您想要支持Windows NT4或更早版本或Windows 9x,则需要切换到使用运行时链接。

答案 2 :(得分:1)

或者,如果您收到错误消息说它已被重新定义,则可以使用:

#if       _WIN32_WINNT < 0x0500
  #undef  _WIN32_WINNT
  #define _WIN32_WINNT   0x0500
#endif
#include <windows.h>