C语言调整控制台颜色、大小、标题、文字位置、窗口位置、按钮

您所在的位置:网站首页 电脑上怎么改变字体方向和大小 C语言调整控制台颜色、大小、标题、文字位置、窗口位置、按钮

C语言调整控制台颜色、大小、标题、文字位置、窗口位置、按钮

2024-07-05 06:23:29| 来源: 网络整理| 查看: 265

控制台是编程中最实用的窗口,下面几招可以随心控制控制台。

1.改变颜色 (1)全局

用color指令可以迅速调节全控制台的文字颜色及背景颜色:

#include #include int main() { printf("PureColorText\n"); system("pause"); system("color 0A"); printf("\nTurn to green\n"); system("pause"); return 0; }

可以发现最后修改了全部文字的颜色。 color本身就是系统带的,在cmd打color /?可以看到用法: 【注】下表的颜色就是十六色。 color用法 这个很好理解。 .

#include (2)局部

那么怎么改一小部分的颜色呢?就稍微有些麻烦:

VOID SetColor(UINT uFore,UINT uBack) { HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle,uFore+uBack*0x10); }

用了俩Windows API,这样就比较方便了:

#include #include #include VOID SetColor(UINT uFore,UINT uBack) { HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle,uFore+uBack*0x10); } int main() { SetColor(14,0); printf("Colorful "); SetColor(11,0); printf("Text\n"); system("Pause"); return 0; }

这样就有两种颜色了。 请注意这里的参数与前面的color是相反的.

2.改变控制台大小

为了让输出内容更有条理,需要改变控制台大小。 这里用了另一个命令.

#include #include #include void SetSize(unsigned uCol,unsigned uLine) { char cmd[64]; sprintf(cmd,"mode con cols=%d lines=%d",uCol,uLine); system(cmd); } int main() { SetSize(80,3); printf("Very very long....................................\n"); system("Pause"); return 0; }

这样就弄出一个非常长的控制台,但有点缺陷就是有点延时。

3.换标题

默认的标题是文件路径,超长一串不美观。用这个可以更换标题。

VOID SetTitle(LPCSTR lpTitle) { SetConsoleTitle(lpTitle); }

往里投个常量字符串参数就能改变标题了.

4.指定文字输出坐标

这个功能就比较厉害了,在做游戏里就很实用。

VOID SetPosC(COORD a) { // set cursor HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(out, a); } VOID SetPos(int x, int y) { // set cursor2 COORD pos= {x, y}; SetPosC(pos); }

两种改变方式,一个传坐标,一个直接传xy(单位:字符长宽). 可以直接跳到所指区域,很方便!

5.改变窗口位置

这个功能也不是非常重要:

//2021/07/18 补添此函数:因为C语言不支持函数重载 RECT GetWindowRect2(HWND hwnd){ //换个名称即可 RECT rt; GetWindowRect(hwnd,&rt); //这是Windows原版函数 return rt; } LONG GetWindowWidth(HWND hwnd){ RECT rect=GetWindowRect2(hwnd); return (rect.right - rect.left); } LONG GetWindowHeight(HWND hwnd){ RECT rect=GetWindowRect2(hwnd); return (rect.bottom - rect.top); } WINBOOL MoveWindow2(HWND hwnd, int X,int Y, BOOL bRepaint) //2021/07/23 修改此处:删除C语言不支持的bool和默认参数 { LONG w,h; w=GetWindowWidth(hwnd); h=GetWindowHeight(hwnd); MoveWindow(hwnd,X,Y,w,h,bRepaint); //原版函数 }

请用第三个函数就能移动控制台了,说一下参数:

WINBOOL MoveWindow2(HWND hwnd, //窗口句柄 int X,int Y, //指定屏幕内坐标(单位:像素) BOOL bRepaint); //是否重绘窗口

用的时候很简单:

//2021/07/23: 参数填完整 //2021/07/25: 又忘了C不能函数重载,再次改名 MoveWindow2(GetConsoleWindow(),100,100,TRUE); //把控制台拖到(100,100) 重绘窗口 6.隐藏光标

控制台输出、输入时都有一个下划线光标在那里闪,用这个函数可以隐藏它:

VOID HideConsoleCursor(VOID) { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); }

直接调用即可。

7.让关闭按钮无效化

这个用于很作死或者有特殊目的的程序:

VOID KillConsoleCloseButton(VOID) { DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_DISABLED); DrawMenuBar(GetConsoleWindow()); } 8.关闭控制台的一些默认模式 #define DISABLE_QUICK_EDIT_MODE 0x01 #define DISABLE_INSERT_MODE 0x02 #define DISABLE_MOUSE_INPUT 0x03 #define DISABLE_ALL (DISABLE_QUICK_EDIT_MODE | DISABLE_INSERT_MODE | DISABLE_MOUSE_INPUT) VOID CloseConsoleMode(UINT uTag) { //通用函数 HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE); DWORD mode; GetConsoleMode(hStdin, &mode); if(uTag & DISABLE_QUICK_EDIT_MODE) mode &= ~ENABLE_QUICK_EDIT_MODE; //移除快速编辑模式 if(uTag & DISABLE_INSERT_MODE) mode &= ~ENABLE_INSERT_MODE; //移除插入模式 if(uTag & DISABLE_MOUSE_INPUT) mode &= ~ENABLE_MOUSE_INPUT; SetConsoleMode(hStdin, mode); return; } VOID CloseConsoleQuickEditMode(VOID) { //关闭快速编辑模式,这个很好用 CloseConsoleMode(DISABLE_QUICK_EDIT_MODE); } VOID CloseConsoleInsertMode(VOID) { //关闭插入模式?我也不是很懂 CloseConsoleMode(DISABLE_INSERT_MODE); } VOID CloseConsoleMouseInput(VOID) { //关闭鼠标输入?我也不是很懂 CloseConsoleMode(DISABLE_MOUSE_INPUT); }

当你需要在控制台程序上进行鼠标操作时,你会发现选中了文字,就很烦,于是这段代码就很有用

int main() { CloseConsoleQuickEditMode(); //关闭快速编辑模式 printf("关闭之后选中文字必须要右键菜单里选择了"); getchar(); return 0; } 9.隐藏控制台 WINBOOL HideConsole() { HWND hwndc=GetConsoleWindow(); // FindWindow("ConsoleWindowClass",NULL); //也可以 return ShowWindow(hwndc,SW_HIDE); }

隐藏控制台的方法很多好吧

10.控制台置顶

这函数都是任何窗口通用的,把句柄换掉就行了

VOID FloatConsole() //(保持)置顶 { SetWindowPos(GetConsoleWindow(),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_DRAWFRAME); // HWND_TOP:顶端 HWND_TOPMOST: 保持顶端 HWND_BOTTOM:底端 //SetForegroundWindow(GetConsoleWindow()); } VOID UnfloatConsole() { //取消置顶 SetWindowPos(GetConsoleWindow(),HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_DRAWFRAME); } 11.丢弃控制台

控制台直接脱离程序。程序依然能运行,但是控制台却退出了

FreeConsole(); //in wincon.h which is in windows.h 12.字体设置

(20221224)不好意思,这么重要的内容现在才发现 直接看别的同志总结的优秀的代码吧: 如何用c改变控制台字体以及字体大小? . . . //注意:使用以上所有开头大写的名称比较正式的函数(Pascal命名法)都是WINAPI, 必须包含windows.h.



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭