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


  • Mod

    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 ?


  • Mod

    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" ?


  • Mod

    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.


Anmelden zum Antworten