您的位置:首页 > 其它

MFC中使用控制台输出Debug信息

2013-03-07 12:42 309 查看
1. 改变整个控制台的颜色

用 system("color 0A");

其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:

0=黑色

1=蓝色

2=绿色

3=湖蓝色

4=红色

5=紫色

6=黄色

7=白色

8=灰色

9=淡蓝色

A=淡绿色

B=淡浅绿色

C=淡红色

D=淡紫色

E=淡黄色

F=亮白色

2. 改变下一个输出或者输入字体和背景的颜色

采用SetConsoleTextAttribute函数,如

White on Black:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);

Red on Black:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_RED);

Green on Black:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_GREEN);

Yellow on Black:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_RED | FOREGROUND_GREEN);

Blue on Black:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_BLUE);

Magenta on Black:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_RED | FOREGROUND_BLUE);

Cyan on Black:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_GREEN | FOREGROUND_BLUE);

Black on Gray:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |

BACKGROUND_INTENSITY);

Black on White:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |

FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);

Red on White:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |

FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |

FOREGROUND_RED);

等等。

需要引入头文件:

windows.h

函数原型:

BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD
wAttributes );

wAttributes 的取值含义对应如下:



Attribute

Meaning

FOREGROUND_BLUE

Text color contains blue.

FOREGROUND_GREEN

Text color contains green.

FOREGROUND_RED

Text color contains red.

FOREGROUND_INTENSITY

Text color is intensified.

BACKGROUND_BLUE

Background color contains blue.

BACKGROUND_GREEN

Background color contains green.

BACKGROUND_RED

Background color contains red.

BACKGROUND_INTENSITY

Background color is intensified.

COMMON_LVB_LEADING_BYTE

Leading byte.

COMMON_LVB_TRAILING_BYTE

Trailing byte.

COMMON_LVB_GRID_HORIZONTAL

Top horizontal.

COMMON_LVB_GRID_LVERTICAL

Left vertical.

COMMON_LVB_GRID_RVERTICAL

Right vertical.

COMMON_LVB_REVERSE_VIDEO

Reverse foreground and background attributes.

COMMON_LVB_UNDERSCORE

Underscore.

案例:

在MFC中使用Console作为信息输出。

AllocConsole();

int hCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), /*_O_TEXT*/_O_APPEND);

*stdout = *(::_fdopen(hCrt, "w"));

::setvbuf(stdout, NULL, _IONBF, 0);

*stderr = *(::_fdopen(hCrt, "w"));

::setvbuf(stderr, NULL, _IONBF, 0);

//system("color 0A");

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);

fprintf_s(stdout, "Info:1234567890\n");

//system("color 01");

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |

FOREGROUND_RED);

fprintf_s(stderr, "Error:1234567890\n");

FreeConsole();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: