Article: Q68865
Product(s): See article
Version(s): 5.10 6.00 6.00a
Operating System(s): MS-DOS
Keyword(s): ENDUSER | s_quickc | mspl13_c
Last Modified: 6-FEB-1991
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);
}