CView in CScrollView // Was gibt es zu beachten?



  • Hallo

    Ich habe vor kurzem die Arbeit ein einem meiner größeren Projekte wieder aufgenommen.

    Veränderte Gegebenheiten machen es nötig, das ich jetz in einer Ansicht scrollen muss/möchte, die bis vor kurzem von CView abgeleitet ist.

    Da das Projekt sehr groß ist, ist es so gut wie unmöglich, das ganze nochmal zu machen und diesmal von CScrollView abzuleiten.

    Deshalb hab ich alles in der Klasse von CView in CScroll View umgeleitet, SetScrollSizes() in InitalUpdate() eingebaut, aber nix passiert.

    Worauf muss ich achten/ was muss ich machen, damit Scrollfelder an der Seite auftauchen, damit ich scrollen kann?

    Ich hoffe ihr könnt mir helfe, vielen Dank schonmal.

    DR

    void CVokMainView::OnInitialUpdate()
    {
        CScrollView::OnInitialUpdate();
    
        //ShowScrollBar(SB_HORZ,TRUE);
    
        CSize sizeTotal; 
        sizeTotal.cx = 3000;     // x-Achse
        sizeTotal.cy = 680;     // y-Achse 
        SetScrollSizes(MM_TEXT, sizeTotal);
    
        SetScrollSizes(MM_TEXT,sizeTotal);
    
    }
    

    in CVokMainView::OnDraw(CDC* pDC)

    CDC speicherDC;
    	speicherDC.CreateCompatibleDC(pDC);
    	speicherDC.SelectObject(&bitmap);
    	RECT rect;
    	GetClientRect(&rect);
    
    	m_ptScrollPos=GetScrollPosition();//Scroll Position abfragen
    
    	pDC->StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&speicherDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
    

  • Mod

    Du musst IMHO gar nichts tun. Wenn SetScrollSizes durchgeführt wird, wird daduch die maximale Größe der gewünschten Anzeigefläche angegeben.

    Den Rest macht der OnSize Handler.

    Hast Du den evtl. überschrieben?



  • nein. Es ist eigtl. alles so wie es seien sollte....Ich hab jetz den Quellqode einer anderen CScrollview-Datei in die *cpp datei kopiert und modifiziert...und es klappt 😕

    Naja..was solls, wenn ich herausgefunden habe, woran es gelegen hat, lasse ich es euch wissen. Danke trotzdem. 🙂


Anmelden zum Antworten