更改整个控制台背景颜色(Win32 C ++)

我怎样才能改变整个控制台的背景颜色? 我试过SetConsoleTextAttribute ,它只改变了新文本的背景颜色。

当出现严重错误时,我实际上希望整个控制台变为红色。

感谢所有尝试提供帮助的人。


试试像这样:

system("color c2");

我认为FillConsoleOutputAttribute函数会做你需要的。 将其设置为控制台的起始坐标,并将nLength设置为控制台中的字符数( width * length )。

BOOL WINAPI FillConsoleOutputAttribute(
  __in   HANDLE hConsoleOutput,
  __in   WORD wAttribute,
  __in   DWORD nLength,
  __in   COORD dwWriteCoord,
  __out  LPDWORD lpNumberOfAttrsWritten
);

我知道这是一个古老的问题,但这个代码如何:

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


VOID WINAPI SetConsoleColors(WORD attribs);


int main() {

    SetConsoleColors(BACKGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);

    std::cout << "Hello, world!" << std::endl;
    std::cin.get();

    return 0;
}


VOID WINAPI SetConsoleColors(WORD attribs) {
    HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);

    CONSOLE_SCREEN_BUFFER_INFOEX cbi;
    cbi.cbSize = sizeof(CONSOLE_SCREEN_BUFFER_INFOEX);
    GetConsoleScreenBufferInfoEx(hOutput, &cbi);
    cbi.wAttributes = attribs;
    SetConsoleScreenBufferInfoEx(hOutput, &cbi);
}

据我所知,这个代码应该可以在Windows Vista和更高版本上运行。 顺便说一句,这段代码是基于这篇文章(主要是文章中的资料):http://cecilsunkure.blogspot.fi/2011/12/windows-console-game-set-custom-color.html

链接地址: http://www.djcxy.com/p/87419.html

上一篇: Change entire console background color (Win32 C++)

下一篇: Change Background color on C# console application