Farbe und Schrift von Combobox ändern

29/09/2011 - 14:54 von Thomas Thiele | Report spam
Hallo,

ich stelle mich zu doof an, die Text- und Hintergrundfarbe einer
Combobox zu àndern.

ComboDevice = ::CreateWindow("COMBOBOX", NULL, CBS_DROPDOWNLIST |
CBS_HASSTRINGS | WS_CHILD | WS_VISIBLE, labelX, posY -
EDIT_NEWLINE_OFFSET, longcomboW, editH + 2000, hwnd, NULL, hinst,
NULL);

Durch subclassing konnte ich immerhin die Auswahllistbox die aufklappt
entpsrechend àndern:

in der eigenen Messagemethode ComboboxControlProc

case WM_CTLCOLORSTATIC:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
::SetTextColor((HDC)wParam, RGB(255, 255, 255)); // white
::SetBkMode((HDC)wParam, TRANSPARENT);
return reinterpret_cast<BOOL>(GetStockObject(BLACK_BRUSH));

Aber nicht das statische "edit" fenster, was man im zugeklappten Fall
sieht. Das sieht weiss aus. Weiss auf weissem Grund ...

Ich brauch mal einen Tipp was ich machen muss. Welches Event ich wo
abfangen muss.

Noch ne Zusatzfrage von geringerer Prioritàt: Oben ist als Höhe editH
+ 2000 angegeben. editH ist 20 (pixel).
Gebe ich als Fenster-Höhe der Combobox also nur 20 an, dann klappt sie
nichtmal aus. Gebe ich 2020 an ist alles super. Nur wie àndere ich
dann die sichtbare Höhe. Wenn ich das Editfenster z.B. viel größer
haben will?

Gruß und danke
Thomas
 

Lesen sie die antworten

#1 Martin Richter [MVP]
30/09/2011 - 08:12 | Warnen spam
Hallo Thomas!

Durch subclassing konnte ich immerhin die Auswahllistbox die aufklappt
entpsrechend àndern:



Bitte beachte, dass einige WM_CTLCOLOR Meldungen an das Parent des
Controls gesendet werden und so durch subclassing des Controls nicht
geàndert/abgefangen werden können.

Noch ne Zusatzfrage von geringerer Prioritàt: Oben ist als Höhe editH
+ 2000 angegeben. editH ist 20 (pixel).
Gebe ich als Fenster-Höhe der Combobox also nur 20 an, dann klappt sie
nichtmal aus. Gebe ich 2020 an ist alles super. Nur wie àndere ich
dann die sichtbare Höhe. Wenn ich das Editfenster z.B. viel größer
haben will?



Du musst die Höhe für die Größe im Dropdown Zustand angeben.
Die eigentliche Höhe im eingeklappten Zustand wird durch das Control
selbst bestimmt.


Martin Richter [MVP] WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written
program is its own hell!" The Tao of Programming

Ähnliche fragen