2014-02-21 205 views
-1

如何更改輸出屏幕的背景色,而無需在Turbo C++中進入圖形模式。我在Windows XP中使用turbo C++。任何幫助,將不勝感激。在C++中更改背景顏色

+1

有點模糊。這是一個控制檯應用程序?它是Windows嗎? –

+2

Turbo C++八年前最近更新了......也許是時候獲得一個現代化的IDE和編譯器了?改爲查看NetBeans或Eclipse。 – jpw

+0

「沒有進入圖形模式」 - >控制檯應用程序。如果你在20年前問過我,我可能會有所幫助。 – crashmstr

回答

2

這裏有一些舊代碼我有一段時間沒有用過。歡迎...

enum {White, Blue, Green, Red, Yellow, Cyan, Magenta, Black, 
     Grey, DarkBlue, DarkGreen, DarkRed, DarkYellow, DarkCyan, DarkMagenta}; 

void ISC_Console::SetColor(int nForeground, int nBackground) 
{ 
    ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), 
     MakeFColor(nForeground) | MakeBColor(nBackground)); 
} 

int ISC_Console::MakeFColor(int nColor) 
{ 
    int nVal = 0; 
    switch (nColor) { 
    case Grey: 
    case White: 
     nVal = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; 
     break; 
    case Red: 
    case DarkRed: 
     nVal = FOREGROUND_RED; 
     break; 
    case Green: 
    case DarkGreen: 
     nVal = FOREGROUND_GREEN; 
     break; 
    case Blue: 
    case DarkBlue: 
     nVal = FOREGROUND_BLUE; 
     break; 
    case Yellow: 
    case DarkYellow: 
     nVal = FOREGROUND_RED | FOREGROUND_GREEN; 
     break; 
    case Cyan: 
    case DarkCyan: 
     nVal = FOREGROUND_GREEN | FOREGROUND_BLUE; 
     break; 
    case Magenta: 
    case DarkMagenta: 
     nVal = FOREGROUND_RED | FOREGROUND_BLUE; 
     break; 
    } 
    if (nColor < Black) nVal |= FOREGROUND_INTENSITY; 
    return nVal; 
} 

int ISC_Console::MakeBColor(int nColor) 
{ 
     int nVal = 0; 
    switch (nColor) { 
    case Grey: 
    case White: 
     nVal = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE; 
     break; 
    case Red: 
    case DarkRed: 
     nVal = BACKGROUND_RED; 
     break; 
    case Green: 
    case DarkGreen: 
     nVal = BACKGROUND_GREEN; 
     break; 
    case Blue: 
    case DarkBlue: 
     nVal = BACKGROUND_BLUE; 
     break; 
    case Yellow: 
    case DarkYellow: 
     nVal = BACKGROUND_RED | BACKGROUND_GREEN; 
     break; 
    case Cyan: 
    case DarkCyan: 
     nVal = BACKGROUND_GREEN | BACKGROUND_BLUE; 
     break; 
    case Magenta: 
    case DarkMagenta: 
     nVal = BACKGROUND_RED | BACKGROUND_BLUE; 
     break; 
    } 
    if (nColor < Black) nVal |= BACKGROUND_INTENSITY; 
    return nVal; 
} 
+0

我不確定,但我不記得多久訪問Windows API API調用Turbo C++了。 – crashmstr

+0

如果沒有別的,這是可悲的不完整的,不會建立在自己的。 –

0

我想你想在輸出文本時改變輸出屏幕的背景。 您只需包含conio.h頭文件並使用內置函數textbackground(COLOR)。

0

這一個是從TC幫助...

#include <conio.h> 

int main(void) 
{ 
    int i, j; 

    clrscr(); 
    for (i=0; i<9; i++) 
    { 
     for (j=0; j<80; j++) 
      cprintf("C"); 
     cprintf("\r\n"); 
     textcolor(i+1); 
     textbackground(i); 
    } 

    return 0; 
} 

textbackground()可以改變文本模式控制檯的背景。