CListBox: Horizontale Bildlaufleiste anzeigen



  • Hallo,

    suche schon einige Zeit danach, wie ich in einer ListBox die horizontale Bildlaufleiste angezeigt bekomme, sobald der Text länger als das Fenster ist. In den Dialogeigenschaften habe ich die Eigenschaft dafür auf TRUE gesetzt, leider wird die Bildlaufleiste trotzdem nicht angezeigt. Habe folgenden Code hier im Forum gefunden und schon ein wenig an mein Programm angepasst:

    CDC *dc = ptrView->m_ListBox.GetDC(); 
    	CFont *font = ptrView->m_ListBox.GetFont(); 
    
    	CFont *oldfont = dc->SelectObject(font); 
    	CSize size = dc->GetTextExtent(ptrView->m_static); 
    	dc->SelectObject(oldfont); 
    			ptrView->m_ListBox.ReleaseDC(dc); 
    
    			size.cx += 4; // noch ein paar Pixel mehr 
    
    			if (size.cx > ptrView->m_ListBox.GetHorizontalExtent()) 
    				ptrView->m_ListBox.SetHorizontalExtent(size.cx);
    

    Der Code wird ohne Probleme kompiliert, aber trotzdem wird die Bildlaufleiste nicht angezeigt.

    Kann mir jemand helfen?

    Danke



  • Habe es jetzt raus.
    Habe noch etwas weiter gesucht und das hier gefunden:

    Vorgehensweise:
    1. DeviceContext (CDC) der ListBox mit GetDC() anfordern.
    2. Mit CDC::GetTextExtent() die Dimensionen des längsten Strings (passend zum CDC der ListBox) feststellen
    3. CListBox::SetHorizontalExtent() entsprechend setzten.

    Mein Fehler war, dass ich nicht die Länge des Strings festgestellt hab, sondern den einer Static Text Variablen.


Log in to reply