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
-
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
-
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.
-
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überGruß 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