2014-02-21 102 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()可以改变文本模式控制台的背景。