C++ 設(shè)置控制臺(命令行)窗口 光標位置,及前背景顏色
核心代碼
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
/*
#define FOREGROUND_BLUE 0x0001 // text color contains blue.
#define FOREGROUND_GREEN 0x0002 // text color contains green.
#define FOREGROUND_RED 0x0004 // text color contains red.
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
#define BACKGROUND_BLUE 0x0010 // background color contains blue.
#define BACKGROUND_GREEN 0x0020 // background color contains green.
#define BACKGROUND_RED 0x0040 // background color contains red.
#define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
*/
//更改當前輸出的顏色(前景色/背景色)
void ColorPrintf(WORD cl,char* str)
{
static HANDLE h = GetStdHandle ( STD_OUTPUT_HANDLE );
//WORD wOldColorAttrs;
//CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
//First save the current color information
//GetConsoleScreenBufferInfo(h, &csbiInfo);
//wOldColorAttrs = csbiInfo.wAttributes;
//Set the new color information
SetConsoleTextAttribute ( h, cl );
printf ( str);
//Restore the original colors
//SetConsoleTextAttribute ( h, wOldColorAttrs);
SetConsoleTextAttribute(h, FOREGROUND_INTENSITY | FOREGROUND_INTENSITY);
}
//移動輸入光標位置
void MoveCursorTo(int x,int y)
{
static HANDLE m=GetStdHandle(STD_OUTPUT_HANDLE);
COORD cp={x,y};
SetConsoleCursorPosition(m,cp);
}
int main ( void )
{
char st[10];
ColorPrintf (FOREGROUND_BLUE | FOREGROUND_INTENSITY, "This is a color test\n" );
for (int j=0;j<255;j+=16)
{
for (int i=0;i<16;i++)
{
sprintf(st,"%02x ",j+i);
ColorPrintf(j+i,st);
}
printf("\n");
}
//printf("\n\n");
//MoveCursorTo( 1, 9 );
//ColorPrintf(0x0083,"This is a test\n");
return 0;
}
終端/控制臺設(shè)置顏色字體、光標定位和清屏
printf("\033[47;31mhello world\033[5m");
47是字背景顏色, 31是字體的顏色, hello world是字符串. 后面的\033[5m是控制碼.
顏色代碼:
QUOTE:
字背景顏色范圍: 40--49 字顏色: 30--39
40: 黑 30: 黑
41: 紅 31: 紅
42: 綠 32: 綠
43: 黃 33: 黃
44: 藍 34: 藍
45: 紫 35: 紫
46: 深綠 36: 深綠
47: 白色 37: 白色
ANSI控制碼:
QUOTE:
\033[0m 關(guān)閉所有屬性
\033[1m 設(shè)置高亮度
\03[4m 下劃線
\033[5m 閃爍
\033[7m 反顯
\033[8m 消隱
\033[30m -- \033[37m 設(shè)置前景色
\033[40m -- \033[47m 設(shè)置背景色
\033[nA 光標上移n行
\03[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH設(shè)置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內(nèi)容
\033[s 保存光標位置
\033[u 恢復(fù)光標位置
\033[?25l 隱藏光標
\33[?25h 顯示光標
這樣, 在某些時候就可以實現(xiàn)動態(tài)的輸出.
相關(guān)文章
C++實現(xiàn)一個簡易版的事件(Event)的示例代碼
之前在?windows系統(tǒng)中開發(fā)應(yīng)用時,?遇到需要進行線程同步的時候幾乎都是使用的事件內(nèi)核對象?Event。本文為大家整理了C++實現(xiàn)一個簡易版的事件(Event)的相關(guān)資料,需要的可以參考一下2022-11-11
QT quick-Popup彈出窗口自定義的實現(xiàn)
本文主要介紹了QT quick-Popup彈出窗口自定義的實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
C++結(jié)構(gòu)體字節(jié)對齊和共用體大小
這篇文章主要介紹了C++結(jié)構(gòu)體字節(jié)對齊和共用體大小,結(jié)構(gòu)體內(nèi)存對齊在筆試和面試中經(jīng)常被問到,所以這篇文章做個總結(jié),首先通過代碼驗證不同結(jié)構(gòu)體的內(nèi)存大小,需要的朋友可以參考下2021-11-11

