owner drawn edit & xp styles
-
Hallo,
ich versuche nun schon seit einer Weile, den Hintergrund eines Edit-Controls transparent zu machen. Unter "normalen" Umständen funktioniert das an sich auch ganz gut. Ich hab das Teil gesubclassed und fange die WM_PAINT ab und male meinen Hintergrund usw.
siehe hier:case WM_PAINT: ptr->DrawWndBG(&s); ReleaseDC(wnd, s.hDC); InvalidateRect(wnd, NULL, TRUE); return CallWindowProc(owp, wnd, msg, wParam, lParam);zusätzlich wird noch die WM_CTLCOLOREDIT im bearbeitet, um das transparent zu bekommen.
Das Problem ist jetzt nur, dass die ganze Sache mit eingeschalteten Themes so gut wie gar nicht mehr funktioniert und der Textbereich schwarz bleibt.
Ich hab auch schon versucht, das Theme-zeug für dieses Control auszuschalten, aber das hilft nicht wirklich.. der Hintergrund bleibt schwarz
-
Sollte eigentlich auch reichen wenn du einfach nen NULL_BRUSH bei WM_ONCTLCOLOREDIT auswählst ... da brauchst de nix subclassen und garnichts ...
-
case WM_CTLCOLORSTATIC: SetTextColor( (HDC)wParam, RGB(0,255,0)); SetBkMode ((HDC) wParam, TRANSPARENT); return (LONG)(HBRUSH)CreateSolidBrush(HOLLOW_BRUSH)
-
@PhoeNix_FasT
WM_CTLCOLORSTATIC greift bei einem Edit-Control nur, wenn es Readonly ist!
-
Oder Du nimmst Detours
.
-
Ich hab doch geschrieben, dass ich das auch mit WM_CTLCOLOREDIT mache. Leider hilft das nicht bei aktivierten Visual Style von XP - probierts doch aus.
Vielleicht sollte ich noch erwähnen, dass der Hintergrund kein Standard-Grau ist, sondern ein BildGesubclassed wird das auch nur für den Fall, dass das Edit nen anderen Hintergrund bekommen soll..
-
Das ist nícht korrekt. Die Hintergrundfarbe eines Edit Controls kann man auch bei aktivierten Themes von XP per WM_CTLCOLOREDIT ändern!
-
Es geht aber nicht nur eine einzelne Farbe, sondern um ein ganzes Bild.. Aber irgendwie wird immer mit schwarz drübergemalt vom windows - obwohl es transparent sein sollte