Witam
Piszę program w Visual C++ z użyciem MFC. Zmieniłem tło dialogów na tło gradientowe, rysowane w metodzie OnEraseBackground. Problem w tym, że tekst na dialogu (CStatic) ma inne tło. W metodzie OnCtlColor można to tło zmienić ale trzeba zwrócić CBrush taki jakie ma być tło, co przy gradiencie sprowadzało by się do wyliczenia koloru w zależności od tego gdzie znajduje się Static.
Czy można jakoś zmusić tekst CStatic do tego żeby rysował się przezroczysty? SetBkMode(TRANSPARENT) tu nie pomaga.
CStatic to okno (o ile sie nie myle) wiec do kompletu dolacz WS_EX_TRANSPARENT to powinno pomoc. To podejscie w stylu winapi na czym mfc stoi. Ewentualnie poszukaj gotowej klasy do mfc - kiedys takie widzialem w stylu CtransparentStatic. A i jeszcze powinno sie chyba pokombinowac z WM_ERASEBKGND ... juz sie pozapominalo :) ach ten .NET
Użyłem klasy CTransparentStatic i jest ok. Problem jest jeszcze z Radiobuttonami, checkboxami itp. Ogólnie porażka żeby tak prostą rzecz musieć robić takimi metodami.
przesiadz sie na WPF po to to wymyslono ... MFC powoli (albo i nie opinie sa rozne) wychodzi z uzytku.
Chyba nie napisales niczego w czystym WInAPI albo X, ze tak narzekasz :)
Co do WPF mam mieszane uczucia. Tam do prostego kalkulatora trzeba tonę ramu i gigaherce w procesorze :)
Kiedyś na coś się przesiądę ale jeszcze nie teraz.
znaki czasu kiedys na MFC wydawalo sie, ze potrzeba ton ramu ...
Ja nawet nie mialem miejsca na pierwszym kompie aby zainstalowac visuala z MFC ledwo co delphi 2 upchalem :)
a katalog windows zajmowal kolo 40-70MB dla porownania teraz 14GB po przenoszeniu kopii poaktualizacyjnych ...