控制台输出控制

//By jingzhongrong
通过Win32API提供的函数,可以对控制台程序的输出进行控制,例如字体颜色、标题文字,以及各种属性等等。
主要使用到的函数以及声明如下:
HANDLE GetStdHandle(
 DWORD nStdHandle
);
此函数用于获取控制台输出、输入句柄。得到句柄之后便可以对输出进行修改了。
下面是几个用于修改的函数,其他函数请查看MSDN获取更详细的说明。
// 用于获得当前控制台的输出属性,用于恢复。
 
BOOL GetConsoleScreenBufferInfo(
 HANDLE hConsoleOutput,
 PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
);
 
//用于修改输出字体颜色
BOOL SetConsoleTextAttribute(
 HANDLE hConsoleOutput,
 WORD wAttributes
);
 
更多函数请查找MSDN上Console Functions。
More information please look for MSDN with “Console Functions”.

 

以下是示例代码:
enum COLOR
{
         blue = FOREGROUND_BLUE|FOREGROUND_INTENSITY,
         green = FOREGROUND_GREEN|FOREGROUND_INTENSITY,
         red = FOREGROUND_RED|FOREGROUND_INTENSITY,
         bblue = BACKGROUND_BLUE|BACKGROUND_INTENSITY,
         bgreen = BACKGROUND_GREEN|BACKGROUND_INTENSITY,
         bred = BACKGROUND_RED|BACKGROUND_INTENSITY
};
HANDLE stdouthandle;
WORD oldincolorattr;
void writeln(COLOR color,char* s)
{
         this->SetColor(color);
         cout<<s<<endl;
         this->SetDefault(1);
}
bool SetColor(COLOR colo)
{
         if(!::SetConsoleTextAttribute(stdouthandle,color))
                   return false;
         else
                   return true;
}//by jingzhongrong
bool SetDefault()
{
         if(!::SetConsoleTextAttribute(stdouthandle, oldoutcolorattr))
                   return false;
         else
                   return true;
}
void main()
{
         stdouthandle = ::GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
         ::GetConsoleScreenBufferInfo(stdouthandle,&csbiInfo);
         oldoutcolorattr = csbiInfo.wAttributes;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值