Viele Figuren statt einer
-
Ich habe erst vor kurzem angefangen mich mit MFC zu beschäftigen, deshalb fehlt mir noch der nötige Überblick.
Über ein Tutorial hab ich mir ein Grundgerüst eines kleines Zeichenprogramms gebaut welches Quadrate und Kreise zeichenen konnte.
Inzwischen hab ich es um einige Figuren erweitert, Laden und Speichern, sowie Dialoge zum Ändern der Werte der Figuren hinzugefügt.Meine Anwendung kann allerdings bisher nur eine Figur abarbeiten.
Ich würde aber gerne ein Feld von Figuren erzeugen, welche ich dann alle ausgeben, bearbeiten und abspeichern/laden kann.Meine Frage ist, welche MFC Methoden ich ändern muss um ein Feld von Figuren bearbeiten zu können? Kann mir bitte jemand weiterhelfen.
Mir fehlt der Überblick.
-
Wenn ichs noch ein wenig erklären kann. In meiner "CZeichnenView::OnDraw(CDC* pDC)" Methode wird ja in diesem Fall ein existierendes Document geladen.
Nun weiß ich nicht ob ich hier auch ein Feld (über einen Index) abfragen kann/muss oder ob hier das Document (Bild) schon feststehen muss, wenn ich mit nem Array von Bildern arbeite:
[b]CZeichnenDoc* pDoc = GetDocument();[/b] ASSERT_VALID(pDoc); // ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen // Datenaustausch zwischen Dokument und Ansicht a = pDoc->a; b = pDoc->b; x = pDoc->x; y = pDoc->y;
Später werden hier die entsprechenen Figuren über ihre Koordinaten gezeichnet.
---
CZeichnenDoc* CZeichnenView::GetDocument() // Die endgültige (nicht zur Fehlersuche kompilierte) Version ist Inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CZeichnenDoc))); return (CZeichnenDoc*)m_pDocument; }
Hier wird ja mein Dokument geladen aber ich seh hier auch nicht so recht durch. Die Methode ist ja automatisch generiert worden.
Im ASSERT wird ja nur überprüft ob CZeichenDoc eine Klasse ist.
Und m_pDocument ist dann mein "Bild" oder?
Wobei das Bild auf den Typ CZeichnenDoc* gecastet wird, welches ein Pointer ist. Sagt mir das schon das ich sozusagen mit *(m_pDocument + 1) ein weiteres Bild ansprechen kann?Oder lieg ich völlig falsch und muss woanders ansetzen?