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 Code

    DRAWITEMSTRUCT *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 );
    }
    

Anmelden zum Antworten