شما اگر از 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 رنگ.





پاسخ با نقل قول