一段有趣又实用的控制台工具代码
来源:互联网 发布:床垫推荐 知乎 编辑:程序博客网 时间:2024/05/21 19:39
这段代码截取自Buckland老师的Programming Game AI by Example这本书的第二章,是一个很实用的控制台工具(ConsoleUntil),可以设置控制台的颜色,贴上来共享一下~~
--------------------------------------------------很无聊的分割线------------------------------------------------------------------------------
#ifndef CONSOLE_UTILS_H
#define CONSOLE_UTILS_H
//------------------------------------------------------------------------
//
// Name: ConsoleUtils.h
//
// Desc: Just a few handy utilities for dealing with consoles
//
// Author: Mat Buckland (fup@ai-junkie.com)
//
//------------------------------------------------------------------------
#include <windows.h>
#include <conio.h>
#include <iostream>
//default text colors can be found in wincon.h
inline void SetTextColor(WORD colors)
{
HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, colors);
}
inline void PressAnyKeyToContinue()
{
//change text color to white
SetTextColor(FOREGROUND_BLUE| FOREGROUND_RED | FOREGROUND_GREEN);
std::cout << "/n/nPress any key to continue" << std::endl;
while (!_kbhit()){}
return;
}
#endif
----------------------------------------------------------------------------------------------------------------------------------------
其中只有两个简单的函数,第二个是一个PressAnyKeyToContinue的函数,非常的简单,不说明了~关键是第一个函数,SetTextColor,接受一个DWORD的参数作为颜色值,然后使用SetConsoleTextAttribute函数设置控制台颜色,他需要两个参数,分别是一个HANDLE,指向当前控制台,这个参数可以使用GetStdHandle来获得,第二个就是一个DWORD的颜色值。
各个函数的解释如下:(见MSDN)
GetStdHandle原型为
HANDLE WINAPI GetStdHandle( __in DWORD nStdHandle );
参数为一个Handle,可以是一下几个值之一:
STD_INPUT_HANDLE
(DWORD)-10
STD_OUTPUT_HANDLE
(DWORD)-11
STD_ERROR_HANDLE
(DWORD)-12
分别对应cin, cout和cerr
SetConsoleAttribute的原型如下:
BOOL WINAPI SetConsoleTextAttribute( __in HANDLE hConsoleOutput, __in WORD wAttributes );
第一个参数就是控制台输出地一个Handle,可以用上面的方法取到,第二个参数则是属性值,MSDN上给出的值如下:
Attribute Meaning FOREGROUND_BLUEText color contains blue.FOREGROUND_GREENText color contains green.FOREGROUND_REDText color contains red.FOREGROUND_INTENSITYText color is intensified.BACKGROUND_BLUEBackground color contains blue.BACKGROUND_GREENBackground color contains green.BACKGROUND_REDBackground color contains red.BACKGROUND_INTENSITYBackground color is intensified.COMMON_LVB_LEADING_BYTELeading byte.COMMON_LVB_TRAILING_BYTETrailing byte.COMMON_LVB_GRID_HORIZONTALTop horizontal.COMMON_LVB_GRID_LVERTICALLeft vertical.COMMON_LVB_GRID_RVERTICALRight vertical.COMMON_LVB_REVERSE_VIDEOReverse foreground and background attributes.COMMON_LVB_UNDERSCOREUnderscore.
基本上就是这样了~~
- 一段有趣又实用的控制台工具代码
- 一段有趣的代码
- 一段很有趣的代码
- 一段有趣的代码的分析
- 一段有趣的代码,猜生日
- 一段代码引发的有趣问题
- Javascript---有趣的一段代码---局部变量
- 一段有趣的并发concurrencyhashMap代码
- loadrunner 一段简单实用的登录代码
- 一段有趣的Javascript
- 一段有趣的程序
- 一段有趣的函数
- 对一段有趣代码分析
- 一段有趣的关于C++const的代码
- 【转载】一段有趣的Javascript代码及分析
- Javascript---有趣的一段代码--this指向问题
- 有趣的控制台console
- 一段使用 FreeType 在控制台打印字符的 C++ 代码
- 2.6 内核 同步机制之spinlock
- PowerTalkTutorial用户方法
- 云计算完整框架
- bde 发布
- 学习算法之路
- 一段有趣又实用的控制台工具代码
- 打分软件界面收录
- Singleton模式实现方式
- 解决Jasperreport的web打印另一种方法
- 如何操作 Office Open XML 格式文档(转)
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- isnull nullif case
- 2010-6-23 Report File Output功能追加
- 文件名排序