002
19.09.2003, 22:04 Uhr
Pablo
Supertux (Operator)
|
Alsom ich werde versuche zu erklären, obwohl ich nicht weiß, wann OnInitDialog() aufgerufen wird.
Wenn du etwas zeichnest, ohne dass es ein gültiges Formular gibt, dann erscheint das nicht. Ich vermute, dass OnInitDialog() aufgerufen wird, wenn das Formular bzw. wenn ein neues Objekt der Klasse initialisiert wird. Winodws hat dann noch nicht das Formular gezeichnet, also werden alle Zeichnungen verloren.
Wenn du willst, dass das Koordinatensystem immer erscheint, dann musst du in OnPaint() (ich glaube, so heißt es, oder?) die Zeichfunktionen schreiben.
Wenn ein neues Dialogfenster geladen wird oder wenn das Fenster verdeckt war und Focus bekommt, dann muss das OS wieder das Fenster zeichnen. Dann wird dieses Event ausgelöst, damit der Programmier auch seine Sachen zeichnen kann, ohne dass sie verschwinden. Das OS weißt nur, wie das Dialog zu zeichnen ist, wegen der Klasse aber das OS kann nciht wissen, was und wie du zeichnen wirst. Deshlab gibt es diese Methode.
Ich bin kein Windows Programmier und ich arbeite mit VC++ auch nicht, aber das tun alle Systeme und das muss man immer tun. Vielleicht hat mich mit dem Namen geiirt und es ist OnPaint() sondern etwas ähnliches.
Zu der zweiten Frage: Du könntest alle Array als ein 2 dim. Array speichern und so übergeben, oder in einen Vektor alle Arrays speichern und so der anderen Funktion übergeben.
Bearbeitung: |
@Flo: Obwohl ich so lange geschrieben hab, dann warst du Minuten langsamer
So wie ich es mir gedacht hab, hat @Flo bestätigt, dass OnPaint() sein muss.
|
-- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 19.09.2003 um 22:08 Uhr von Pablo Yanez Trujillo editiert. |