Hintergrundfarbe in Childframe bei einer MDI änern



  • Hi!
    Ich bin ein totaler Neuling was MFC angeht.
    Und irgendwie komme ich trotz Büchern etc. nicht wirklich zu potte.
    Ich möchte in meinem Programm, welches mit dem Klassenassistenten erstellt wurde die Hintergrundfarbe ändern
    und mit einem Gitter versehen.
    Genauergesagt soll dieses standartmäßig im Childframe geändert sein.
    Wo muss ich jetzt was machen, damit ich das hin bekomme?
    *rotwerd*
    Hab schon einiges gesucht, aber bin nicht draus schlau geworden.
    Beispiel:
    http://support.microsoft.com/kb/q103786/

    schon mal vielen Dank
    Gruß Mav


  • Mod

    Das Childframe wird normnalerweise komplett von dem View verdeckt.
    Warum willst Du also im ChildFrame etwas ändern?

    Wo möchtest Du denn, dass diese Grids erscheinen?



  • Ich verstehe nicht WO du die Farbe ändern willst.
    Du hast ein CMDIFrameWnd und ein odere mehrere CMDIChildWnd.
    Ist kein CMDIChildWnd offen, dann siehst du die dunkelgraue Fläche des CMDIFrameWnd. Meinst du diese?

    Oder meinst du das CMDIChildWnd selbst, da müsste man aber wissen ob du dieses von CView oder CFormview abgeleitet hast.

    Update: Letzter Satz ist falsch, CMDIChildWnd ist nur der Rahmen, abgeleitet wird natürlich von einer View-Klasse.



  • http://img232.imageshack.us/img232/8052/forumfrage1nh0.th.jpg

    So siehts bei mir aus und in dem Fenster solls halt nicht weiss sondern Hellgrau sein und ein Gitternetz erscheinen.
    Ich stell mich bestimmt nur etwas blöd an, sorry. 😕

    Gruß Mav


  • 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


Log in to reply