CListBox subclass: DrawItem() nicht aufgerufen
-
ich habe wieder ein problem innerhalb einer DLL:
ich rufe ein dialogfeld nicht-modal auf. während der OnInitDialog() funktion meines dialogfeldes erzeuge ich über eine anderen funktion (nenne sie mal "funcX") mit new eine klasse die ich von CListBox abgeleitet habe.
ich rufe die Create() funktion der subclass so auf:
Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL | LBS_SORT | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT, rRectVar, this, iCtrlIDVar);
ich kann items in die box einfügen und sie werden korekt mit DrawItem() dargestellt.
jetzt möchte ich noch eine box meiner subclass erstellen wenn der benutzer auf ein button klickt. jetzt rufe ich wieder funcX() auf um die box zu erzeugen. die box wird auch dargestellt nur die items die eingefügt werden werden nicht gezeichnet da DrawItem() meiner subclass nicht mal aufgerufen wird !?!?
statt dessen wird für ein item eine weiße box eingefügt. die maße für ein item stimmen, aber es wird wie gesagt nur ein weißer kasten abgebildet, den ich auch mit dder maus markieren kann.
-
Wenn ein Eintrag gezeichnet wird dann wird die Nachricht WM_DRAWITEM an das Elternfenster geschickt.
Ich vermute einmal das diese Nachricht jetzt nicht mehr an dein Haupfenster
geschickt wird sondern an ein Fenster eine Ebene tiefer. Da aber deine
DrawItem Funktion im Haupfenster eigehängt ist ereichen die Nachrichten
deine Funktion nicht.Du müsstes in der Nachrichenschleife des Elternfenserts die Nachricht
WM_DRAWITEM auswerten.
-
theoretisch, aber das steuerelement was ich während OnInitDialog() erzeuge funktioniert ja, nur alles was ich erzeuge während das Programm läuft funktioniert nicht.