000
21.08.2004, 10:15 Uhr
tronaccount
|
Hallo,
ich beschäftige mich seit kurzem mit der Windows-Programmierung über die MFC mit dem Ziel, eine Anwendung mit einer OpenGL-Darstellung dreidimensionaler Objekte zu erstelln.
Habe auch einen Haufen Tutorials dazu gefunden und arbeite mich mit einigen Büchern ins Thema MFC ein. Soweit, so gut.
Jetzt tue ich mich aber mit dieser ereignisorientierten Denkweise noch recht schwer:
Ich habe ein Beispielprogramm gefunden (www.francisshanahan.com/detail.aspx?cid=137), das funktioniert und mir soweit klar ist. Was ich nicht verstehe: Das Programm animiert OpenGL-Objecte. Innerhalb der OnDraw()-Funktion steht folgendes:
C++: |
void ....::OnDraw(CDC *pdDC) { static int i = 0
i+= 1.11;
. . . //Jetzt folgen OpenGL-Aufrufe mit i als Winkel für die Objekte
SwapBuffers(...)
Invalidate(FALSE) }
|
Also wird durch WM_PAINT die OnDraw-Funktion aufgerufen und dabei die Variable i inkrementiert, wodurch die GL-Objekte andere Winkel bekommen und sich beim nächsten OnDraw() gedreht darstellen. Ist das richtig?
Aber normalerweise müßte doch eine Fehlermeldung kommen, weil i bei jedem Aufruf von i neu definiert wird!? Oder hat das was mit static zu tun!?
Außerdem: Wodurch wird überhaupt sichergestellt, daß OnDraw() regelmäßig aufgerufen wird? Muß dazu nicht das Fenster verschoben/die Größe verändert werden? Oder ruft sich OnDraw automatisch selbst auf? Kenne mich in den member-Funktionen noch nicht so aus...
Ist wahrscheinlich keine wilde Sache, bei mir hakt's aber noch
Danke für Eure Tipps,
Tobias Dieser Post wurde am 21.08.2004 um 10:31 Uhr von tronaccount editiert. |