设置颜色通过Windows函数BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes)实现。
#include<stdio.h> #include<windows.h> intmain(void) { HANDLEconsolehwnd;//创建句柄,详细句柄知识,请百度一下或查MSDN consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//实例化句柄 SetConsoleTextAttribute(consolehwnd,FOREGROUND_RED);//设置字体颜色 printf("hello"); SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY|FOREGROUND_GREEN); printf("world!\n"); getchar(); SetConsoleTextAttribute(consolehwnd,BACKGROUND_INTENSITY|BACKGROUND_BLUE); printf("Itisreallybeautiful!\n"); return0; }
能设置些什么颜色呢?在wincom.h里有定义:
#define FOREGROUND_BLUE 1 #define FOREGROUND_GREEN 2 #define FOREGROUND_RED 4 #define FOREGROUND_INTENSITY 8 #define BACKGROUND_BLUE 16 #define BACKGROUND_GREEN 32 #define BACKGROUND_RED 64 #define BACKGROUND_INTENSITY 128
我们来测试一下:
/* * main.c * * Created on: 2014-6-16 * Author: HZY */ #include <stdio.h> #include <windows.h> void setConsoleColor(WORD color){ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle, color); } int main(int argc, char** argv) { int i; for(i = 0; i < 16; i++){ setConsoleColor(i); printf("Hello World!"); setConsoleColor(i << 4); printf("Hello World!\n"); } getchar(); return 0; }前景色和背景色都可以自由组合: