Setting _settextcolor() to Zero May Give Unexpected Results

ID Number: Q68865

5.10 6.00 6.00a 6.00ax

MS-DOS

Summary:

When in a graphics mode, using the function _settextcolor() with an

argument of "0" to select black does not work as expected. For

example, the code below sets the background color to _WHITE, sets the

text color to 0 (Black), and tries to print text to the screen.

In this example, the resultant foreground and background colors are

the same. Remember that _setbkcolor() sets the color for index 0. When

_settextcolor() is called with the same index, nothing will seem to

appear because the _setbkcolor() function resets color index 0 to the

new color. When _settextcolor() is called with index 0, the foreground

and background colors are the same, and therefore, nothing appears on

the screen.

To work around the problem, just call _remappallette() to move the

desired color off index 0. The comments in the following code

illustrate this:

Sample Code

-----------

#include <stdio.h>

#include <conio.h>

#include <graph.h>

void main()

{

_setvideomode(_MAXRESMODE);

// _remappalette(1,0); // Uncomment for the workaround.

_setbkcolor(_WHITE);

_settextcolor(0);

// _settextcolor(1); // Uncomment for the workaround.

_outtext("foo");

getch();

_setvideomode(_DEFAULTMODE);

}

Additional reference words: QuickC 2.0 2.00 2.01 2.5 2.50 2.51 5.1

5.10 6.0 6.00 6.0a 6.00a 6.0ax 6.00ax