hy ich habe ein problem mit der Combobox klasse. ich will dort icons in die combobox setzten. In den beiden beispielen auf codeproject sind jedesmal eigene Klassen für die Combobox erstellt worden.
In den jeweiligen klassen von den beispielen gibt es eine DrawItem Funktion. Und hier liegt mein problem.
Ich kann mir in meiner anwendung eine CCtrlComboBox klasse erstellen dies hab ich über den klassenassistenten sowie über das register klassen erstellt. dann habe ich die DrawItem funktion mit dem klassenassi eingefügt in beiden fällen reagiert die Funktion DrawItem nicht.
ich hab dann mal versucht in einem der Beispiele mir ne eigene ComboBox klasse zu erstellen und diese dann mit der Combobox zu verbinden. wenn ich in dem beispiel dann die funtion DrawItem in meine gerade erstellte Klasse einfüge reagiert die funktion DrawItem.
erstell ich mir aber ein eigenes beispiel nur mit einem dialog und ner combobox, erstelle mir dann noch eine Combobox klasse und verbinde diese mit der combobox wird die DrawItem funktion nicht angesprochen
weis jemand Warum??? bzw. wie mus ich die klassen erstellen das die DrawItem funktion funktioniert. bzw wie muß ich mein project erstellen.
die von mir erstellten klassen sehen von der strucktur genau so aus wie die in den beispielen.
andere funktionen die nicht durch den klassenassi erstellt werden kann ich aber problemlos ansprechen.
die Combo muss OwnerDraw sein sonst wird DrawItem nicht aufgerufen. Ich hab das immer gelöst indem ich das im CTLColor-Reflect ModifyStyle(0, BS_OWNERDRAW); aufgerufen habe -- class God : public ChuckNorris { };
jetzt klapt das. hab in meinem testbeispiel im eigenschaftsfeld der combobox im register Format den Typ auf Dropdown-Listenfeld gestellt die Besitzerzeichnung Fixiert und hab nen hacken bei mit Zeichenfolde gesetzt jetzt wird DrawItem angesprochen.
achja MeasureItem sollte man bei Combos auch überschreiben (vgl bsp in der msdn) da das den platz pro dropdown-"item" "vorbereitet" -- class God : public ChuckNorris { };