C语言怎么改变窗口的字体颜色和背景颜色?

C语言怎么改变窗口的字体颜色和背景颜色?如果学C语言久了,难免会对弹出的黑窗口感到厌烦,那这时候如果能改一下黑窗口的背景颜色和字体颜色,也许会给自己一个好一点的心情。废话不多说,现在开始教你怎么简单地改变窗口的字体颜色和背景颜色。

大家好,又见面了,我是你们的朋友全栈君。

如果学C语言久了,难免会对弹出的黑窗口感到厌烦,那这时候如果能改一下黑窗口的背景颜色和字体颜色,也许会给自己一个好一点的心情。废话不多说,现在开始教你怎么简单地改变窗口的字体颜色和背景颜色。

一、首先,当然是引入头文件,除了常规的输入输出<stdio.h>,还要将<windows.h>引入,因为要调用系统的函数;

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

二、标准库定义了好多的颜色常量,不过都很长不好记,我们先来记一下常用的,简单地常量值代表的颜色;

    0 = 黑色     
    1 = 蓝色    
    2 = 绿色   
    3 = 湖蓝色   
    4 = 红色    
    5 = 紫色    
    6 = 黄色   
    7 = 白色       
    8 = 灰色       
    9 = 淡蓝色     
    A = 淡绿色     
    B = 淡浅绿色    
    C = 淡红色     
    D = 淡紫色    
    E = 淡黄色    
    F = 亮白色

三、为了方便,可以将颜色用一个枚举来定义

enum Color
{
      black, blue, green, lakeBlue, red, purple, yellow, white, gray,
      lightBlue, lightGreen, lightSimpleGreen, lightRed, lightPurple, lightYellow, brightWhite  
};

四、知道了颜色的常量值,我们就可以直接调用system(“color 07”)函数来改变背景色和字体色,其中,”color 07″中的0和7代表的是两个数字,上面第二点有说到,0是黑色,7是白色,这是调试窗口的默认颜色,我们可以将”color 07″改成”color 12″就会看到背景色变为了蓝色,字体变为了绿色。知道了原理后,你就可以不用继续往下看,直接用system(“color 前景色值背景色值”)函数来改变颜色了。不过为了更好地运用和记忆,可以将这个系统函数封装一下;

void setColor(unsigned short backColor=0, unsigned short textColor=7){
	char command[9]="color 07";		//默认颜色	
	command[6]='0'+backColor;		//将backColor变量改为字符型 
	command[7]='0'+textColor;		//将textColor变量改为字符型 
	system(command);				//调用系统函数 
}

五、这时候可以不用system函数了,可以调用setColor(1,2)函数来将窗口背景色改为蓝色,将字体改成绿色,另外,因为之前设置了枚举,调用setColor(green,red)也有一样的效果;

setColor(1,2);

六、以上代码合并起来:

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

enum Color
{
      black, blue, green, lakeBlue, red, purple, yellow, white, gray,
      lightBlue, lightGreen, lightSimpleGreen, lightRed, lightPurple, lightYellow, brightWhite  
};

void setColor(unsigned short textColor=0, unsigned short backColor=7){
	char command[9]="color 07";		//默认颜色	
	command[6]='0'+backColor;		//将backColor变量改为字符型 
	command[7]='0'+textColor;		//将textColor变量改为字符型 
	system(command);				//调用系统函数 
}

int main(){	
	setColor(1,2);
	//setColor(blue,green);
	
	printf("蓝色背景,绿色字体\n\n");
}

七、运行效果如下:

C语言怎么改变窗口的字体颜色和背景颜色?

八、这样子还不过瘾,只是单纯把系统函数封装一下而已,我又写了一个好玩的一点的程序(可能我比较无聊),你们可以复制粘贴玩一下:

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

enum Color
{
      black, blue, green, lakeBlue, red, purple, yellow, white, gray,
      lightBlue, lightGreen, lightSimpleGreen, lightRed, lightPurple, lightYellow, brightWhite  
};

void setColor(unsigned short backColor=0, unsigned short textColor=7){
	char command[9]="color 07";		//默认颜色	
	command[6]='0'+backColor;		//将backColor变量改为字符型 
	command[7]='0'+textColor;		//将textColor变量改为字符型 
	system(command);				//调用系统函数 
}

int main(){	

	for(int i=0; i<10; i++){
		
		if(i%3!=0){
			printf("		");
		}
		else{
			printf("\n\n");
		} 
		
		setColor(black,red);
		printf("	病毒入侵! ( Attacked )	");
		
		Sleep(100);
		
		setColor(black,green);
		printf("	已查杀病毒( Defend )	");
		
		Sleep(200);
	}
	
	printf("\n\n\n病毒已清除完毕!\n\n\n");
}

九、调用system(“color 07”)封装起来的函数每次都是全局变颜色,对于只想改变字体颜色,并且每次改变都不影响到上一次的颜色的话,可以参考下面的代码,运行结果跟上面的第九条稍微不一样,有兴趣的可以研究一下:

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

void color(const unsigned short textColor)
{       
	if(textColor>=0 && textColor<=15)
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), textColor);
    else
    	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}

int main(){
	
	for(int i=0; i<10; i++){
		
		if(i%3!=0){
			printf("		");
		}
		else{
			printf("\n\n");
		} 
		
		color(4);
		printf("	病毒入侵! ( Attacked )	");
		
		Sleep(100);
		
		color(2);
		printf("	已查杀病毒( Defend )	");
		
		Sleep(200);
	}
	
	color(2);
	printf("\n\n\n病毒已清除完毕!\n\n\n");
	color(0);
} 

上面第九条的color函数是我很久之前看到的一个博主写的并且解释得很详细,突然找不回来那篇文章的地址了,我不是很精通C语言,也解释不清楚其中的GetStdHandle(STD_OUTPUT_HANDLE)作为SetConsoleTextAttribute函数的第一个变量的意思了,有兴趣的可以去详细地查一下。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151578.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CANoe之CAPL编程(CANoe系列其三)「建议收藏」

    CANoe之CAPL编程(CANoe系列其三)「建议收藏」CANoe之CAPL编程(CANoe系列其三)摘要1、CAPL概述1.1、CAPL语言特性1.2、CAPL的程序结构1.3、CAPL的数据类型1.4、CAPL事件类型概述2、CAPL事件类型2.1、系统事件2.2、CAN控制器事件2.3、CAN消息事件2.4、时间事件2.5、键盘事件2.6、错误帧事件2.7、环境变量事件2.8、系统变量事件摘要    &…

    2022年10月25日
    0
  • Ubuntu12.04 LAMP 基本配置

    Ubuntu12.04 LAMP 基本配置

    2021年8月19日
    54
  • BP算法详解_bp算法的基本思想

    BP算法详解_bp算法的基本思想说到神经网络,大家看到这个图应该不陌生:这是典型的三层神经网络的基本构成,LayerL1是输入层,LayerL2是隐含层,LayerL3是隐含层,我们现在手里有一堆数据{x1,x2,x3,…,

    2022年8月2日
    3
  • idea设置注解格式_idea添加类注释

    idea设置注解格式_idea添加类注释开发过程中经常看到源码中的注释,感叹大佬的注释为何写得那么清新脱俗,决定简单研究一下IDEA中的注释本文主要分为三个部分:注释的显示状态切换如何在注释中添加超链接注释状态切换:之前看大佬们的注释都是:而我的注释:为何源码中别人的注释和自己写的注释显示效果完全不一样呢其实是设置问题而已(今天才知道…尴尬了)点击图中的铅笔就可以切换为注解源码,效果如下:再点击图中左上角的图标就切换回了注释的阅览视图…

    2022年9月27日
    0
  • JMeter聚合报告吞吐量误差分析

    JMeter聚合报告吞吐量误差分析前言 最近公司有个项目要进行压测 压测完之后发现 tps 没有达到预期目标 最后自己手动计算了一遍 tps 偶然间发现一个问题 JMeter 报告中的吞吐量误差较大 下面这个聚合报告是我起的 demo 结果如下图 按照经典理论模型计算吞吐量 TPS 或者 QPS 应该是等于并发线程数除以平均响应时间 tps Thread AVG t 并发线程数除以平均响应时间 或者 tps COUNT request T 总的请求数除以总的请求时间 大家看上图汇总结果 平均响应时间 494ms 30 并发 计算得到

    2025年6月2日
    0
  • win7下虚拟显示器完成记(virtual monitor)——VDI显卡透传场景「建议收藏」

    win7下虚拟显示器完成记(virtual monitor)——VDI显卡透传场景「建议收藏」背景本次使用wddm过滤驱动的应用场景是VDIGPU透传场景,我这边运用WDDM过滤驱动,也有人叫wddmhook,主要有如下功能:(1)给透传显卡虚拟出一个显示器,因为透传显卡都是插在服务器上,一台服务器需要插十几张显卡(消费级显卡),不可能给每个显卡插一个显示器,不插显示器又会存在分辨率无法设置,分辨率过低的问题,为此需要自己虚拟一个显示器“插”在透传显卡上。(2)我们VDI使…

    2022年8月21日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号