Ich muss unter MFC ein Projekt erweitern. Wie kann man unter MFC eine
Linie einen Punkt ein Rechteck zeichnen lassen?
In Google habe ich schon geschaut, hab da nichts gescheites gefunden.
hat von euch jemand ein Beispielprojekt wo man sehen kann, wie so was
unter MFC funktioniert? Das Problem wo ich noch dabei habe ist, dass ich
nicht genau weiss wo man da den Code plazieren muss.
Uwe wrote:
> Ich muss unter MFC ein Projekt erweitern. Wie kann man unter MFC eine> Linie einen Punkt ein Rechteck zeichnen lassen?> In Google habe ich schon geschaut, hab da nichts gescheites gefunden.> hat von euch jemand ein Beispielprojekt wo man sehen kann, wie so was> unter MFC funktioniert? Das Problem wo ich noch dabei habe ist, dass ich> nicht genau weiss wo man da den Code plazieren muss.
Zeichnest du in einem View oder in einem Control, welches in einem
Dialog eingesetzt wird?
Beides funktioniert ähnlich, nur musst du dich in verschiedene
Funktionen reinklinken.
View: Du hängst dich in die OnDraw rein
Control: Du hängst dich in die OnPaint rein
In beiden Funktionen kriegst du einen CDC Pointer übergeben, der
die Zeichenfläche repräsentiert. Und über den CDC erzeugst du
dann deine Zeichnung. CDC hat eine Menge Memberfunktionen, zb.
MoveTo, LineTo, SetPixel, Rectangle, TextOut, etc ....
Wenn du damit Schwierigkeiten hast, dann solltest du mal zumindest
ein MFC Tutorial von vorne weg durcharbeiten. Das sind die absoluten
Basics.
Mit diesem Tutorial kannst du erstmal ein paar MFC Grundlagen lernen
(incl. Grafiken): http://home.wtal.de/ranzurmall/visualc/
es baut zwar auf Visual C++ auf, aber man kann bestimmt auch einiges für
andere Compiler ableiten.
Uwe wrote:
> Ja am besten wäre, wenn ich so ein Beispiel projekt hätte, wo alles> wesentlich vorhanden ist. Ich möchte mit dem OnDraw arbeiten.
Irgendwo in deiner Dev-Studio Installation gibt es das
bekannte 'Scribble' Demo. Das geht in mehreren Stufen den
Prozess des Erstellens einer SDI Applikation durch.
Inklusive Zeichnen.
ANsonsten:
Das ist nicht weiter schwer.
Lass die mal ein neues Projekt erzeugen:
SDI Applikation
Dann gehst du in die View Klasse. Der Wizard hat dort schon
die OnDraw Funktion eingebaut.
In die ergänzt du mal:
(CMyView und CMyDoc werden bei dir anders heissen, je nachdem
wie du dein Projekt benannt hast. Ist aber egal, den Teil
hat der Wizard ja bereits fertig erzeugt;
1
voidCMyView::OnDraw(CDC*pDC)
2
{
3
CMyDoc*pDoc=GetDocument();
4
ASSERT_VALID(pDoc);
5
6
// hier ergänzt du
7
8
pDC->MoveTo(0,0);
9
pDC->LineTo(100,100);
10
11
// bis hier
12
}
Das ist schon alles. Neu builden und laufen lassen und dann
muss im Fenster eine Linie zu sehen sein. 0-Punkt
links oben, x geht nach rechts, y geht nach unten.
Schau dich wirklich nach einem Tutorial im Web um.
Das ist eine der leichtesten Übungen mit MFC. Da warten
noch wesentlich schwierigere Dinge auf dich.
Ich verfluche echt MFC.
Ich hab da schon probleme mit dem Poi0nter CMyDoc* pDoc = GetDocument();
Funktioniert überhaupt gar nichts.
Hat jemand ein lauffähiges Programm.
Muss man die OnDraw Funktion dann noch irgendwo aufrufen?
Ich raffe da echt nichts. Ich benöte nur mal ein lauffähiges Beispiel,
das mir eine Linie zeichnet.
schau dir halt mal das Tutorial, was ich weiter oben gepostet habe, an.
Ich glaube aber die Funktion OnDraw wird automatisch aufgerufen, wenn
das Fenster, in dem gezeichnet werden soll, geöffnet wird. Also ist die
Funktion keine "unabhängige" Funktion, sondern eine Funktion eines
Objektes / einer Klasse. Um genau zu sein, nichtmal vom Fenster an sich,
sondern von der Ansicht (View) Kasse des Fensters. Ich bin mir nicht
ganz sicher ob ich mich so richtig ausgedrückt habe, aber ich denks mal.
Hab mich auch erst ein bissel mit MFC beschäftigt.
Und um das ganze zu verstehen musst du eh erstmal nen Tutorial oder nen
Buch zu Hand nehmen. Meiner Meinung nach, kann man mit MFC nicht mal
einfach so nen Strich zeichnen, man muss das Gerüst dahinter verstanden
haben...
>> Hab diese Funktion erstmal erstellt. Ich kann aber keine Linie sehen.
Die Funktion sollte OnDraw heißen. Außerdem musst du dem Framework
klarmachen, dass diese Funktion auch aufgerufen werden soll (von
selbigem).
Bei Microsoft Visual C++ 6.0 gibts unter Ansicht den Klassenassistenten,
womit man einfache Event-Handler hinzufügen kann.
PS: Den Gefallen dir ein lauffähiges Programm abzuliefern wird dir hier
sicher niemand tun.
naja bei dem Tutorial is ein lauffähiges Beispiel dabei, kann man sich
alles runterladen. Nur ohne die Grundlagen von MFC zu kennen, versteht
man im Quelltext recht wenig. Deshalb sollte man halt auch das Tutorial
oder nen Buch dazu lesen...
>> Hab diese Funktion erstmal erstellt. Ich kann aber keine Linie sehen.
Wozu red ich mir eigentlich den Mund fusselig.
Die Funktion heist OnDraw und ist bereits vom Wizard
erstellt worden, wenn du ein neues Projekt erzeugst.
Du musst lediglich 2 Zeilen (in Worten: zwei) in eine
bereits vorhandene Funktion einfügen. Das kann doch
nicht so schwer sein.
Karl heinz Buchegger wrote:
> Die Funktion heist OnDraw und ist bereits vom Wizard> erstellt worden
Ich bin mir gerade nicht 100% sicher, aber ich meine, dass die OnDraw
nicht standardmäßig drin ist. Wenn du dir da jetzt nicht 100% sicher
bist, werde ich das aufjedenfall nochmal nachprüfen.
Aber egal: Im Klassenassistenten kannst du diese Funktion hinzufügen.
Simon K. wrote:
> Karl heinz Buchegger wrote:>> Die Funktion heist OnDraw und ist bereits vom Wizard>> erstellt worden>> Ich bin mir gerade nicht 100% sicher, aber ich meine, dass die OnDraw> nicht standardmäßig drin ist. Wenn du dir da jetzt nicht 100% sicher> bist, werde ich das aufjedenfall nochmal nachprüfen.
Ich habs geprüft. Sie wird.
Alles was er tun muss:
* ein neues Projekt erzeugen. Ob SDI oder MDI ist erst mal egal
* Dem Projekt einen Namen geben
* Das CPP File für die View Klasse aufmachen
* runter scrollen bis zur OnDraw Funktion
* Die beiden Zeilen (stellvertretend für eine Grafik) einfügen
* F7 - Build
* F5 - Ausführen
* Sich am Ergebnis erfreuen und überlegen, wie man mit mehr
Linien eine komplexere Grafik hinkriegt.