console程序顯示彩色文字 .

 1、概要
  相信大部分關注本篇文章的你們都曾經寫過console程序,那麼你們是否面厭煩了一層不變的“黑底白字”的屏幕,是否有曾想過要給console程序的屏幕畫畫“彩妝”呢?本篇文章就是介紹如何給console程序顯示彩色文字。
  

2、給console程序屏幕畫彩妝
  直接進入主題,需要用到的函數有:
  GetStdHandle
  SetConsoleTextAttribute

  另外演示代碼中還用到了:
  WriteFile
  GetConsoleScreenBufferInfo

2.1、GetStdHandle
  GetStdHandle是獲得標準的輸入、輸出和錯誤的設備句柄,也就是獲得輸入、輸出/錯誤的屏幕緩衝區句柄。

  HANDLE GetStdHandle( DWORD nStdHandle );
  nStdHandle可以是下列值之一:
  STD_INPUT_HANDLE standard input handle
  STD_OUTPUT_HANDLE standard output handle
  STD_ERROR_HANDLE standard error handle

  如果返回的標準的輸入設備句柄,那麼,你可以用ReadFile函數從console屏幕來讀取由鍵盤輸入的字符串,就像C語言中的scanf函數。如果是標準的輸出設備句柄,那麼可以用WriteFile函數向屏幕寫入要顯示的字符串,類似C語言中的printf函數。錯誤設備句柄也只能作爲輸出。
  注意:nStdHandle不能是兩個或兩個以上值的組合,也就是說GetStdHandle獲得的一個標準設備句柄,要不只能輸入,要不只能輸出,不可兼得。

2.2、SetConsoleTextAttribute
  
Console默認的屏幕字體爲黑底白字,SetConsoleTextAttribute能改變字體的背景色和字體顏色,只有調用了該函數,console的字體顏色還能得以改變。

  其原型爲:
  BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes );
  hConsoleOutput:由GetStdHandle獲得的標準輸入、輸出和設備句柄。
  wAttributes:要設定的顏色值,FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE,等

2.3、GetConsoleScreenBufferInfo
  
這個函數的作用僅僅是獲取當前console屏幕的一些屬性值,其中就包括字體顏色。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章