CWnd färben ...
-
Kann ich ein beliebiges Fenster färben ? Speziell. eine Combobox in der DialogBar ? In einer Dialogvorlage, geht es. ( Mit .. OnCtlColor .. ).
-
Schau dir mal OnEraseBkgnd() an, damit kommst du bei allen weiter. Aber nur wenn du dir ne eigene Klasse von der gewünschten Klasse abgeleitet hast.
Gruß Matthias
-
GeorgC++ schrieb:
Kann ich ein beliebiges Fenster färben ? Speziell. eine Combobox in der DialogBar ? In einer Dialogvorlage, geht es. ( Mit .. OnCtlColor .. ).
Ja kannst Du. Sofern Deine Ansprüche nicht zu weit gehen, wie z.B. Zeilenweises einfärben.
-
Wenn ich meine DialogBar erstelle, muss ich der Create-Funktion eine
Dialog Resourcen ID übergeben. Wenn ich meine Combobox färben will,
gehe ich dann wie folgt vor ? Ich erstelle eine leere DialogBar und
leite CMeinCombobox von CComboBox ab. Dann färbe ich CMeinCombobox mit
OnEraseBkgnd ... und platziere die Combobox per Code ?
-
Indem Du die bestenede Combobox die im Dialog Templat eliegt subclassed, oder einfach nach erzeugen des Dialoges per Create Deine Combobox anlegst.
Ich würde immer den ersten Weg gehen.
-
Martin, was heisst denn "subclassed" ?
-
Einem bestehenden Fenster verpasst man eine neue Fensterprozedur.
In der MFC passiert das wenn man einem eigenen CWnd Control ein Dialog Item zuordnet über SubclassDlgItem.
Durch SubclassDlgItem/SubclassWindow wird ein existierendes Fenster auf ein CWnd Objekt gemapt und auch die Fensternachrichten durch der Klasse ersetzt und behandelt.Subclassing und superclassing sind mit die wichtigsten Designwerkzeuge der Windows UI Programmierung.