LB_GETTEXTLEN liefert immer 4 zurück
-
Hi!
Das Problem ist, dass LB_GETTEXTLEN immer 4 zurückliefert.
Hier ist ein Ausschnitt aus dem WM_DRAWITEM CodeDRAWITEMSTRUCT *dis = (LPDRAWITEMSTRUCT)lParam; HDC hDC = dis->hDC; RECT rc = dis->rcItem; unsigned id = dis->itemID; /* ... */ LRESULT MsgLen; MsgLen = SendMessage( dis->hwndItem, LB_GETTEXTLEN, (WPARAM)id, 0 ); char *Message = new char[MsgLen+1]; SendMessage( dis->hwndItem, LB_GETTEXT, (WPARAM)id, (LPARAM)&Message ); DrawText ( hDC, Message, MsgLen, &rc, DT_SINGLELINE);Wenn ich bei der ListBox das OwnerDraw wegnehme funktioniert alles und Message zeigt auch auf die richtige Stelle von der Nachricht. Trotzdem steht in MsgLen immer 4 und angezeigt werden dementsprechend auch nur die ersten 4 Zeichen (selbst wenn der Text 2 Zeichen lang ist werden 4 Zeichen angezeigt).
Was ist da falsch?
-
SendMessage( dis->hwndItem, LB_GETTEXT, (WPARAM)id, (LPARAM)&Message );Muss da nicht vor Message das & weg

-
Dachte ich auch erst - Aber dann kommt im Endeffekt nur Wirrwarr raus.
Sonst müsste ich ja hier schon Mist gemacht haben:
void CListBox::AddItem( char *Text ) { SendMessage( Handle, LB_ADDSTRING, 0, (LPARAM)Text ); }