啊哈磊_编程从这里起步

标题: 教程——不同文字设置不同的颜色和背景色 [打印本页]

作者: rosynirvana    时间: 2014-9-30 01:32
标题: 教程——不同文字设置不同的颜色和背景色
控制台是操作系统提供的,那么对控制台进行编程操作自然就要通过系统提供的一组函数——WINAPI来进行了

首先要明白,在windows下面一个最基本的抽象是Handle,中文一般翻译成句柄。句柄指向分操作系统中不同的东西的,例如控制台窗口有句柄,桌面上的所有窗口都有不同的句柄,系统用句柄来区分不同的窗口。

为了告诉操作系统我们要进行操作的对象是控制台窗口,而不是其他窗口,就要获取控制台的句柄。
一种比较好的方式是读取标准输出流(unix抽象,请自己研究)绑定的窗口
  1. HANDLE  console = GetStdHandle( STD_OUTPUT_HANDLE);
复制代码

HANDLE是类型,函数的含义很容易从函数名推断出来

然后,使用SetConsoleTextAttribute函数更改颜色就行了,具体请看示例代码

  1. #include <stdio.h>
  2. #include <windows.h>

  3. int main()
  4. {
  5.   HANDLE console;

  6.   console = GetStdHandle(STD_OUTPUT_HANDLE);
  7.   SetConsoleTextAttribute(console, FOREGROUND_BLUE);
  8.   puts("blue");
  9.   system("pause");
  10.   SetConsoleTextAttribute(console, FOREGROUND_GREEN);
  11.   puts("green");
  12.   SetConsoleTextAttribute(console, FOREGROUND_RED);
  13.   puts("red");
  14.   SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_GREEN);
  15.   puts("Aqua");
  16.   SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_RED);
  17.   puts("purple");
  18.   SetConsoleTextAttribute(console, FOREGROUND_GREEN | FOREGROUND_RED);
  19.   puts("Yellow");
  20.   SetConsoleTextAttribute(console, FOREGROUND_RED | FOREGROUND_GREEN |
  21.                                                           FOREGROUND_BLUE);
  22.   puts("White");

  23.   SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_GREEN |
  24.           FOREGROUND_RED | BACKGROUND_GREEN);
  25.   puts("Green foreground white background");


  26.   return 0;
  27. }
复制代码

作者: 卑微、_A7qxq    时间: 2014-12-17 12:43
挺好玩的  感觉应该再加上个getchar();  防止闪退{:soso_e112:}
作者: 趣味的吃    时间: 2015-7-10 07:17
看懂了,是不是定义句柄后每次在更改控制台输出的颜色时输入[mw_shl_code=c,true]SetConsoleTextAttribute(定义的句柄, FOREGROUND_XX颜色的英文 | FOREGROUND_XX颜色的英文);[/mw_shl_code]就行了。输出应该会和美术中这两个颜色调和起来的一样。但这两句我有点迷糊[mw_shl_code=c,true]SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_GREEN |
          FOREGROUND_RED | BACKGROUND_GREEN);  puts("Green foreground white background");”[/mw_shl_code]这两句中的四个颜色,分别是给背景和字体上色?如果是,又上的哪几个色呢?请给我一些指导。谢谢。
作者: 木木子    时间: 2018-6-3 18:31
看不懂诶                                                                                                        




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2