|
控制台是操作系统提供的,那么对控制台进行编程操作自然就要通过系统提供的一组函数——WINAPI来进行了
首先要明白,在windows下面一个最基本的抽象是Handle,中文一般翻译成句柄。句柄指向分操作系统中不同的东西的,例如控制台窗口有句柄,桌面上的所有窗口都有不同的句柄,系统用句柄来区分不同的窗口。
为了告诉操作系统我们要进行操作的对象是控制台窗口,而不是其他窗口,就要获取控制台的句柄。
一种比较好的方式是读取标准输出流(unix抽象,请自己研究)绑定的窗口
- HANDLE console = GetStdHandle( STD_OUTPUT_HANDLE);
复制代码
HANDLE是类型,函数的含义很容易从函数名推断出来
然后,使用SetConsoleTextAttribute函数更改颜色就行了,具体请看示例代码
- #include <stdio.h>
- #include <windows.h>
- int main()
- {
- HANDLE console;
- console = GetStdHandle(STD_OUTPUT_HANDLE);
- SetConsoleTextAttribute(console, FOREGROUND_BLUE);
- puts("blue");
- system("pause");
- SetConsoleTextAttribute(console, FOREGROUND_GREEN);
- puts("green");
- SetConsoleTextAttribute(console, FOREGROUND_RED);
- puts("red");
- SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_GREEN);
- puts("Aqua");
- SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_RED);
- puts("purple");
- SetConsoleTextAttribute(console, FOREGROUND_GREEN | FOREGROUND_RED);
- puts("Yellow");
- SetConsoleTextAttribute(console, FOREGROUND_RED | FOREGROUND_GREEN |
- FOREGROUND_BLUE);
- puts("White");
- SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_GREEN |
- FOREGROUND_RED | BACKGROUND_GREEN);
- puts("Green foreground white background");
- return 0;
- }
复制代码 |
|