CScrollbar mit Create zu Laufzeit erst.



  • Hallo,

    ich möchte eine ScrollBar vom Typ CScrollbar zur Laufzeit erstellen, diese soll dann in ider Toolbar oder Dialogbar auftauchen.

    Folgenden Code hab ich dafür verwendet:

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	if (!m_wndToolBar.CreateEx(this) ||	!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    	{
    		TRACE0("Symbolleiste konnte nicht erstellt werden\n");
    		return -1;      // Fehler bei Erstellung
    	}
    	if (!m_wndDlgBar.Create(this, IDR_MAINFRAME, CBRS_ALIGN_ANY, AFX_IDW_DIALOGBAR))
    	{
    		TRACE0("Dialogleiste konnte nicht erstellt werden\n");
    		return -1;		// Fehler bei Erstellung
    	}
    	if (!m_wndDlgBarState.Create(this, IDR_MAINFRAME_STATE, CBRS_ALIGN_ANY, AFX_IDW_DIALOGBAR))
    	{
    		TRACE0("Dialogleiste konnte nicht erstellt werden\n");
    		return -1;		// Fehler bei Erstellung
    	}
    
    	if (!m_wndReBar.Create(this) ||
    		!m_wndReBar.AddBar(&m_wndToolBar,0,GetSysColor(COLOR_BTNFACE),NULL,RBBS_NOGRIPPER) ||
    		!m_wndReBar.AddBar(&m_wndDlgBarState,0,GetSysColor(COLOR_BTNFACE),NULL,RBBS_NOGRIPPER) ||
    		!m_wndReBar.AddBar(&m_wndDlgBar,0,GetSysColor(COLOR_BTNFACE),NULL,RBBS_NOGRIPPER))
    	{
    		TRACE0("Infoleiste konnte nicht erstellt werden\n");
    		return -1;      // Fehler bei Erstellung
    	}
    
    	if (!m_wndStatusBar.Create(this) ||
    		!m_wndStatusBar.SetIndicators(indicators,
    		  sizeof(indicators)/sizeof(UINT)))
    	{
    		TRACE0("Statusleiste konnte nicht erstellt werden\n");
    		return -1;      // Fehler bei Erstellung
    	}
    
             // ab hier kommt der scroller
    	if (!m_wndScrollBar.Create(SBS_HORZ,CRect(450, 4, 550, 21),&m_wndDlgBar,IDC_SCROLL)) { 
    		TRACE0("Scroller konnte nicht erstellt werden\n");
    		return -1;
    	}
    	m_wndScrollBar.ShowScrollBar();
    	m_wndScrollBar.EnableScrollBar();
    
    	// ZU ERLEDIGEN: Entfernen, wenn Sie keine QuickInfos wünschen
    	m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
    		CBRS_TOOLTIPS | CBRS_FLYBY);
    
    	return 0;
    }
    

    so weit klappt auch alles, das Control ist da, man kann es steuern, aber wie bekomme ich eine response zurück.
    Mit "ON_WM_HSCROLL" bzw "ON_WM_VSCROLL" funktioniert es nicht.
    Ich denke mal das man das anders anpacken muß, aber wie?

    also: Please help me! *g*

    Vielen Dank.



  • Eine Nacht darüber geschlafen, und von der Lösung geträumt *g*.

    Nach einigen logischen Überlegungen kam ich auf die Idee, die OnHScroll Methode von der CDialogBar in einer neuen Klasse (geerbt von CDialogBar) zu überladen. Funktioniert.

    trotzdem Danke.


Anmelden zum Antworten