Hintergrundfarbe in Childframe bei einer MDI änern


  • Mod

    Das ist Dein View! Das hat nichts mit dem Frame zu tun.

    Ich empfehle Dir ein Tutorial wie Scribble!



  • in deiner CxxxView befindet sich eine Funktion OnDraw(CDC* pDC), darin kannst du zeichnen:

    CBrush	hintergrund( RGB(100,100,100) ); 
    CRect	client;
    
    GetClientRect(client);
    
    pDC->FillRect(client, &hintergrund);
    
    pDC->MoveTo(x,y)
    pDC->LineTo(x,y)
    

    Man kann es auch in EraseBackground packen:
    ON_WM_ERASEBKGND() unter BEGIN_MESSAGE_MAP hinzufügen
    und Hintergrund in BOOL CxxxView::OnEraseBkgnd(CDC* pDC) zeichnen.



  • Anhand deines Screenshots sehe ich dass du eventuell ein Shape-Zeichenprogramm machen willst (Rechtecke, Kreise zeichnen).

    Schaue mal auf Codeproject oder Google. Bei wxWidgets gibts auch ein wxShapeFramework http://sourceforge.net/projects/wxsf siehe Screenshots.



  • [/img] http://sourceforge.net/project/screenshots.php?group_id=200491&ssid=67862[/img]

    Wenn mein Programm dann irgendwann genau so aussieht, wäre ich richtig glücklich!!! Schon mal danke für die Tips, ich schau mal ob ich damit weiter komme. 😕

    Gruß Mav



  • Also mit dem Code oben bekomme ich nix gebacken, bin echt ein Neuling, sorry.
    Kann mir jemand mal den Code schnell umschreiben, damit das funzt oder was für Infos braucht ihr noch? 😕
    Im Moment sieht meine OnDraw so aus:

    void CAktivitätsdiagrammView::OnDraw(CDC* /*pDC*/)
    {
    	CAktivitätsdiagrammDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
    	if (!pDoc)
    		return;
    
    	// TODO: Code zum Zeichnen der systemeigenen Daten hinzufügen
    }
    

    Gruß Mav



  • void CAktivitätsdiagrammView::OnDraw(CDC* /*pDC*/)
    {
        CAktivitätsdiagrammDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
        if (!pDoc)
            return;
    
       CRect  client;
       CPen   raster(PS_SOLID, 1, RGB(0,0,0)); //Stift erstellen
    
       GetClientRect(client);
       pDC->SelectObject(&raster); //Stift auswählen
    
       for (int x=0; x < client.Width(); x=x+15)  //Schleife senkrechte Striche
       {
         pDC->MoveTo(x, 0);                          //Gehe zu x oben
         pDC->LineTo(x, client.Height());    //zeichne Linie bis x unten
       }
    }
    

    So in etwa...
    Bedenke noch Drucken, Zoom, CDC::SetMapMode etc.



  • @Softwaremaker:

    Wobei das so net laufen kann, da pDC nicht bekannt ist, also muß der Kommentar bei:

    void CAktivitätsdiagrammView::OnDraw(CDC* /*pDC*/)
    

    noch entfernt werden und die Schleife für y noch aufgebaut werden. Als nächstes wird er sich bestimmt melden das dass ganze beim Zeichnen Flackert (Doublebuffering).

    Nur mal mein Kommentar dazu.

    @Maverick5182

    Haste dir etwas viel vorgenommen wenn schon Probleme beim Hintergrundzeichnen da sind, sollteste dich vielleicht erstmal mit den grundlagen der MFC Beschäftigen. Tutorials gibts genug im Netz.

    Gruß Matthias



  • Das mit dem auskommentierten pDC habe ich übersehen, also Kommentar entfernen.
    Alles wollte ich ihm auch nicht vorgeben, die waagerechten Striche schafft er alleine.
    Klar hat er sich sehr hohe Ziele gesteckt, aber besser als keine (Motivation).



  • Vielen Dank!!!
    Nur noch eine kleine Bitte den Hintergrund will ich in ganz hellem Grau machen 🙂
    Raster funktioniert aber schon mal 🙂
    Ich schick dir ein virtuelles Bierchen rüber 😉

    Gruß Mav



  • @ CTecS

    Jupp hab mir fast zu hohe Ziele gesteckt aber da muss ich jetzt durch.
    Und das mit dem Auskommentieren hab ich dann sogar selbst gesehen, aber trotzdem vielen Dank!!!

    @Sofwaremaker
    Das Raster ist komplett, hast mir ja an den senkrechten Strichen Idiotensicher gezeigt.

    Gruß Mav



  • Sorry, Suchfungktion!!!
    Erschlagtm ich bitte nicht 😉



  • Was für eine Suchfunktion? Etwas mehr Informationen mußte schon geben.

    Gruß Matthias



  • Ich mein für den Hintergrund hätte ich einfach mal selbst suchen müssen --> Suchfunktion.
    Das war Einsicht von meiner Seite 😉
    Aber noch mal vielen Dank an euch!!!

    Gruß Mav


Anmelden zum Antworten