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:
- Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, and 6.0ax
- Microsoft C/C++ for MS-DOS, version 7.0
- Microsoft Visual C/C++ for Windows, version 1.0
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:
#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