in CListCtrl abgeleiteter Klasse geht GetScrollBarCtrl nicht immer?



  • Moin,
    ich bestimme in meiner Klasse die Headerbreite Dynamisch - Dafür muß ich wissen wie breit die VERT-Scrollbar ist. Dies mach ich wie folgt:

    CRect rcScrollbar;
    	CScrollBar * pScrollBar = GetScrollBarCtrl(SB_VERT);
    	if(pScrollBar != NULL)
    	{
    		GetWindowRect(rcScrollbar);
    		nScrollbarbreite = rcScrollbar.Width();
    	}
    

    So nun ist aber bei mir immer pScrollBar == NULL. Obwohl sogar beide Scrollbars da sind.

    Muß ich etwas beachten damit das funktioniert? Muß ShowWindows(SW_SHOW) sein oder ähnliches?



  • Also in meinem MSDN steht

    This member function does not operate on scroll bars created when the WS_HSCROLL or WS_VSCROLL bits are set during the creation of a window. The CWnd implementation of this function simply returns NULL. Derived classes, such as CView, implement the described functionality.

    Das würde ich so interpretieren, dass diese Funktion nur bei bestimmten MFC Klassen funktioniert.
    Aber warum in die Ferne schweifen? Probier's mal mit GetScrollBarInfo oder GetSystemMetrics(SM_CXVSCROLL) 😉



  • Top funktioniert. Hast recht ist viel einfacher.

    Aber nun hab ich einen nicht so tollen Effect:
    Bei mir taucht immer erst eine SB_HORZ auf. Und wenn ich dann nach rechts Scrolle verschwindet die. Also ist da eigendlich nix zum Scrollen.
    Versteht mich einer *fg*

    Hab schon mal:

    ShowScrollBar(SB_HORZ, false);
    

    versucht aber da taucht die auch ersteinmal auf. *mega-gr*


Anmelden zum Antworten