شما اگر از system استفاده کنید دریافت رنگ قبلی سخت می شود، پس از توابع GetConsoleScreenBufferInfo برای دریافت اطلاعات رنگ و SetConsoleTextAttribute برای وارد کردن آن ها استفاده کنید:

HANDLE hStdout, hStdin;
CONSOLE_SCREEN_BUFFER_INFO scrInfo;

hStdin = GetStdHandle(STD_INPUT_HANDLE);
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

GetConsoleScreenBufferInfo(hStdout, &scrInfo)) ;
WORD OldColor = scrInfo.wAttributes; // get current color

SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY);

//--
// use color here
//--

SetConsoleTextAttribute(hStdout, wOldColorAttrs);

- در پایان هر وقت خواستید به رنگ قبلی برگدانید همان خط آخر را فراخوانی می کنیم.

- در تابع سایر فلگ ها مانند FOREGROUND_GREEN و .. غیره وجود دارد.پس اگر می خواهید یک تست انجام دهید تا تمام رنگ ها را مشاهده کنید، در پارامتر دوم SetConsoleTextAttribute فقط عدد 1 تا 16 را فراخوانی کنید و یک نوشته بنویسید تا 16 رنگ را ببینید.

- ضمنا دقت کنید، هر رنگ دلخواه امکان پذیر نیست، تنها 16 رنگ.