Dlaczego 254 ify? O_O Kolorów jest... kilkanaście, tak? No to 2 * liczba_kolorów to jest liczba potrzebnych ifów.
A troche realnej, to... Rozumiem, że funkcja ma otrzymywać kolory w postaci ich nazw (stringi), bo jeżeli argumentami funkcji mają być inty (id kolorów), to nie wiem po co ci jakiekolwiek ify ? W takim razie stwórz sobie mape z kluczem string (nazwa koloru) i wartościami int (id kolorów). I w zasadzie to tyle.
void f(const std::string & _txtName, const std::string & _bgName)
{
static std::map<std::string, int> colors{
std::make_pair("black", 0 /* nie wiem czy to faktycznie jest 0 */),
// reszta wypełniania mapy
};
setTextColor(colors[_txtName]);
setBgColor(colors[_bgName]);
}
setTextColor i setBgColor to ofc odpowiednie funkcje z WinAPI (bo wydaje mi się, że o to ci chodzi).