使用ansicon的Windows 7控制台中的ANSI颜色代码

时间:2015-02-23 22:31:18

标签: c windows console

我试过这个solution,ansicon工作正常,我可以从批处理文件中输出彩色文本:

@echo ←[1m←[31mTESTANSI←[0m

但是当我运行这个程序时:

#include <stdio.h>
int main () {
  printf("\x1b[31mTESTANSI");
  return 0;
}

我看不到颜色,但是这个:

←[31mTESTANSI

编辑:这是一个适合我的简单winapi解决方案。它基于此article

#ifndef __CONCOL_H__
#define __CONCOL_H__

#include <windows.h>

enum concol {
    black, dark_blue, dark_green, dark_cyan, dark_red, dark_purple, dark_yellow, dark_white,
    gray, blue, green, cyan, red, purple, yellow, white
};

inline void setcolor(enum concol textcol, enum concol backcol) {
    textcol %= 16;
    backcol %= 16;
    unsigned short wAttributes = ((unsigned) backcol << 4) | (unsigned) textcol;
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wAttributes);
}

#endif /*__CONCOL_H__*/

1 个答案:

答案 0 :(得分:0)

Windows 7控制台做了一些奇怪的事情,你的程序在Mac上运行良好。

您必须在使用/ kansicon自行启动的控制台中执行该程序。

如果您直接从资源管理器运行该程序,控制台可能无法启动ansi支持...这是垂死平台的另一个缺点。