麒麟子

~~

导航

<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿(12)

随笔分类

随笔档案

Friends

WebSites

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜

代颜色的提示信息输出。

前几天在网上搜到一段改变控制台字符颜色的代码,用它做了一个代字体颜色的Log输出。感觉还是比较不错的。

  /*
  0 黑色 1 深蓝 2绿 3浅蓝
  4暗红 5暗紫 6嫩黄 7浅白
  8浅灰 9亮蓝 10亮绿 11非常蓝
  12大红 13亮紫 14黄 15白 
  */

这是那段代码。我已做成了ANSI和UNICODE都支持的版本,具体为什么要这样,可以看前一篇关于字符编码与IO的问题。
    void __Printfc(U16 color, const TCHAR* format,
    

        va_list argList; 
        U16 oldcolor; 
        HANDLE hCon
=GetStdHandle(STD_OUTPUT_HANDLE); 
        CONSOLE_SCREEN_BUFFER_INFO bInfo; 
        GetConsoleScreenBufferInfo(hCon, 
&bInfo ); 

        oldcolor 
= bInfo.wAttributes;
        
if(oldcolor!=color)
            SetConsoleTextAttribute(hCon,color); 

#ifdef _UNICODE
        _tsetlocale(LC_CTYPE,TEXT(
""));
#endif

        va_start( argList, format ); 
        _tprintf( format,argList); 
        va_end( argList );

#ifdef _UNICODE
        _tsetlocale(LC_CTYPE,TEXT(
"C"));
#endif
        
if(oldcolor!=color)
            SetConsoleTextAttribute(hCon,color);  
    }
 

posted on 2010-08-20 01:00 麒麟子 阅读(292) 评论(0)  编辑 收藏 引用 所属分类: Programming


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理