Horizontale Bildlaufleiste der ListBox im MFC



  • Hallo,

    eine kleine Frage: Wie kann man die horizontale Bildlaufleiste der ListBox aktivieren? Die Einträge, die ich de Listbox anhänge, trage ich mit ListBox.AdddString(string) ein. Jedoch wird dieser String nicht komplett dargestellt, und auch die horizontale Bildlaufleiste ist deaktiviert. Wie kann ich ihr beibringe, bei Einträgen der ListBox, die länger sind als das Wiedergabefenster, die horizontale Bildlaufleiste zu aktivieren?

    Danke für jede Antwort.

    Grüße
    JohnTK



  • In den Eigenschaften "Linke Bildlaufleiste" auf TRUE setzen.



  • Ne, das geht irgendwie nicht.... hat keine Auswirkung, die hori. Bildlaufleiste wird nicht aktiviert....



  • Du must zusätzlich eine Gesamtbreite für die Einträge mit CListBox::SetHorizontalExtent angeben.



  • Dazu brauche ich meine gewünschte Breite in Pixel... Weiss auch vorher nicht, wie lang der String ist, den ich da rein schreibe.
    Wie bekomme ich nun die Pixelbreite aus meinem String heraus?? Welche Pixelbreite hat ein Zeichen?



  • So gehts:

    int CMyDialog::AddStringToList(LPCTSTR str)
    {
        CDC *dc = m_ListBox.GetDC();
        CFont *font = m_ListBox.GetFont();
    
        CFont *oldfont = dc->SelectObject(font);
        CSize size = dc->GetTextExtent(str);
    
        dc->SelectObject(oldfont);
        m_ListBox.ReleaseDC(dc);
    
        size.cx += 4; // noch ein paar Pixel mehr
    
        if (size.cx > m_ListBox.GetHorizontalExtent())
            m_ListBox.SetHorizontalExtent(size.cx);
    
        int inx = List.AddString(str);
    
        return inx;
    }
    


  • Wow... danke, probiere das gleich erst einmal aus. Vielen Dank
    JohnTK


Anmelden zum Antworten