以前编写控制台程序,都是一种颜色,现在可以利用SetConsoleTextAttribute函数,设置控制台的前景色和背景色。
闲话少说,直接上代码看效果:
1、设置控制台颜色后,恢复默认颜色
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
HANDLE hStdOutHandle;
WORD wOldColorAttrs;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
hStdOutHandle = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hStdOutHandle, &csbiInfo);
wOldColorAttrs = csbiInfo.wAttributes;
printf("显示控制台文字默认颜色\n");
SetConsoleTextAttribute(hStdOutHandle, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
printf("设置控制台文字为绿色\n");
SetConsoleTextAttribute(hStdOutHandle, FOREGROUND_RED | FOREGROUND_INTENSITY);
printf("设置控制台文字为红色\n");
SetConsoleTextAttribute(hStdOutHandle, wOldColorAttrs);
printf("恢复控制台文字默认颜色\n");
getchar();
return 0;
}
运行效果如下:
2、明暗颜色对比,及几种常见颜色的显示
#include <windows.h>
#include <iostream>
using namespace std;
void OutLightAndShadeText(WORD wAttributes, LPCTSTR pszTip)
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdOut, wAttributes);
cout << pszTip << "\t" << flush;
SetConsoleTextAttribute(hStdOut, wAttributes | FOREGROUND_INTENSITY);
cout << pszTip << "\t" << flush;
// 转变为对应的背景色
wAttributes = wAttributes << 4;
SetConsoleTextAttribute(hStdOut, wAttributes);
cout << pszTip << "\t" << flush;
SetConsoleTextAttribute(hStdOut, wAttributes | BACKGROUND_INTENSITY);
cout << pszTip << "\t" << endl;
}
int main()
{
OutLightAndShadeText(FOREGROUND_RED, "Red");
OutLightAndShadeText(FOREGROUND_GREEN, "Green");
OutLightAndShadeText(FOREGROUND_BLUE, "Blue");
OutLightAndShadeText(FOREGROUND_RED | FOREGROUND_GREEN, "Yellow");
OutLightAndShadeText(FOREGROUND_GREEN | FOREGROUND_BLUE, "Cyan");
OutLightAndShadeText(FOREGROUND_BLUE | FOREGROUND_RED, "Magenta");
OutLightAndShadeText(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE, "White");
getchar();
return 0;
}
运行效果如下: