搜索
查看: 2047|回复: 3
打印 上一主题 下一主题

教程——不同文字设置不同的颜色和背景色

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-30 01:32:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
控制台是操作系统提供的,那么对控制台进行编程操作自然就要通过系统提供的一组函数——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. }
复制代码
沙发
发表于 2014-12-17 12:43:37 | 只看该作者
挺好玩的  感觉应该再加上个getchar();  防止闪退{:soso_e112:}
板凳
发表于 2015-7-10 07:17:26 | 只看该作者
看懂了,是不是定义句柄后每次在更改控制台输出的颜色时输入[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:44 | 只看该作者
看不懂诶                                                                                                        
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表