Setting _settextcolor() to Zero Gives Unexpected Results

ID: Q68865

5.10 6.00 6.00a 6.00ax 7.00 | 1.00

MS-DOS                      | WINDOWS
kbprg

The information in this article applies to:

SUMMARY

When in a graphics mode, using the function _settextcolor(), _setcolor(), or outgtext() 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("mystring");
   getch();

   _setvideomode(_DEFAULTMODE);
}

Additional reference words: kbinf 5.10 6.00 6.00a 6.00ax 7.00 1.00 KBCategory: kbprg KBSubcategory: CRTIss GraphicsIss Keywords : kb16bitonly

Last Reviewed: July 18, 1997