是否有一个winapi调用,可以在控制台中设置颜色,如'color xx'命令?

rsk*_*k82 0 c++ console winapi colors

我知道我可以这样做system("color 1E"),但我很好奇是否有api调用可以做到这一点,因为这些更快,我需要为所有控制台着色color.我知道只有api调用,SetConsoleTextAttribute()但这只是在使用后写入的文本着色.

Luk*_*uke 5

我调试了cmd.exe(在Windows 7上),这是"color"命令的作用:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csBufferInfo;
GetConsoleScreenBufferInfo(hConsole, &csBufferInfo);
DWORD dwLength = csBufferInfo.dwSize.X * csBufferInfo.dwSize.Y;
COORD dwOrigin = { 0 };
DWORD dwWritten = 0;
FillConsoleOutputAttribute(hConsole, wAttribute, dwLength, dwOrigin, &dwWritten);
SetConsoleTextAttribute(hConsole, wAttribute);
Run Code Online (Sandbox Code Playgroud)

哪里wAttribute有你想要的颜色.