Witam.
Nie mam pomysłu na poradzenie sobie z problemem dużej ilości konfiguracji funkcji. Naprzykład funkcja ConsoleSetAttributeText()
1.SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),kolor)
2.SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),kolor | BACKGROUND_INTENSITY);
3.SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),kolor | BACKGROUND_RED | BACKGROUND_INTENSITY);
4.SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),kolor | FOREGROUND_BLACK | BACKGROUND_RED | FOREGROUND_INTENSITY);
I tak dalej… Wywołanie, np.: z batch wygladaloby naprzyklad tak: Teoria:
program.exe jakistekst foregroundred foregroundgreen foregroundblue foregroundintensity backgroundred backgroundgreen backgroundblue backgroundintensity
Praktyka:
program.exe "tekst o potworze" 1 0 0 1 1 0 0 1
albo jeszcze inna kombinacja, na przykład:
program.exe "fopa" 0 0 0 0 0 0 0 1
Co robić w takich przypadkach? Najlepiej prosiłbym o przykładowy kod. Początek i problem:
int main(int argc, char *argv[])
{
//przyklad: program.exe -cx 'tekst' 'kolor ' piszciagle(1-tak)' foregroundred foregroundgreen foregroundblue foregroundintensity backgroundred backgroundgreen backgroundblue backgroundintensity
if(argv[1] == cx && argv[2] != NULL && argv[3] != NULL && argv[4] != NULL && argv[5] != NULL && argv[6] != NULL && argv[7] != NULL && argv[8] != NULL && argv[9] != NULL && argv[10] != NULL && argv[11] != NULL && argv[12] != NULL)
{
char * tekst = argv[2];
int kolor = atoi(argv[3]);
int varzm = atoi(argv[4]);
int foregroundred = atoi(argv[5]); //opcja1
int foregroundgreen = atoi(argv[6]);
int foregroundblue = atoi(argv[7]);
int foregroundintensity = atoi(argv[8]); //opcja2
int backgroundred = atoi(argv[9]); //opcja3
int backgroundgreen = atoi(argv[10]);
int backgroundblue = atoi(argv[11]);
int backgroundintensity = atoi(argv[12]); //opcja4
//opcje z wyswietlaniem tekstu
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), kolor | BACKGROUND_RED | FOREGROUND_INTENSITY);
std::cout << tekst << std::endl;
if(varzm == 1)//piszciagle
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
if(varzm== 0 )
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),kolor);
}
}
return 0;
}
P.S Wiem że początek z ifem mogę zrobić lepiej, potem się tym zajmę.