現在のカラー属性を取得し、フォアグラウンドのみを変更します。
以下、テストされていないとはいえ、どんな背景色あなたが始める動作するべきではありません:あなたは黒に背景を変更
HANDLE outputHandle = GetStdHandle (STD_OUTPUT_HANDLE); //used twice
CONSOLE_SCREEN_BUFFER_INFOEX cbie; //hold info
//article didn't say this was necessary, but to be on the safe side...
cbie.cbSize = sizeof (CONSOLE_SCREEN_BUFFER_INFOEX);
GetConsoleScreenBufferInfoEx (outputHandle, &cbie); //get info
//first, cancel out all foreground attributes
//then, set the ones you want (I use bright red)
cbie.wAttributes &=
~(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cbie.wAttributes |= (FOREGROUND_RED | FOREGROUND_INTENSITY);
SetConsoleScreenBufferInfoEx (outputHandle, &cbie); //pass updated info back
。両方を指定する必要があるため、既存の背景色も使用してください。クリスが示唆したように。 –