OpenGL im MFC Fenster
-
Hiho,
ich habe recht lange gesucht, um ein Tutorial zu finden, mit dem man OpenGL in einem MFC Fenster nutzen kann, und dann noch Buttons und ähnliches zufügen kann. Auf gamedev.net gibt es ein gutes Tut dazu, welches bei mir leider nicht lief :(.
Ich habe einen AppWizzard gefunden, der mir ein einfaches Fenster erstellt hat, in dem eine OpenGl Anwendung lief. Nun wollte ich noch ein zweites Fenster zufügen, in dem ich verschiedene Steuermöglichkeiten haben würde. Ich habe es auch geschafft ein zweites Fenster zu erstellen, jedoch weiss ich nicht, wie ich nun ein Dialog, den ich in einer Resourcen Datei erstellt habe auf dieses Fenster anwenden kann.
Kann mir einer helfen? Der Code sollte recht simpel sein. Ich will "IDD_DIALOG1" in dem ConfWnd Fenster anzeigen lassen (das kleine).
Schöner wäre es natürlich, wenn ich mit dem Ress editor einfach einen Bereich in einem Dialog enistellen könnte, in dem meine OpenGL Scene gerendert wird, aber da hab ich leider kein gutes Tut für gefunden (hab nur mitbekommen, das geht mit Splittern oder sowas :)).
Danke für die Hilfe,
iuizHier das Programm (mit MS VC++ 98 erstellt) www.halof.com/WithAppWiz.zip
-
Gaaanz einfach,
Du mommst auf jedenfall nicht drum herum das ganze seöber zu machen. Du kannst prinzipiell jedes Window dafür benutzen.
Im zusammenhang mit MFC ist es wohl am einfachsten eine eigene CWnd Klasse abzuleiten und ihr die ganze Initialisierungsfunktionalität mitzugeben. Wie das geht findest du in jedem Tutorial (suche mal nach NEHE - Tutorial).
-
Die NeHe Tuts sind aber nur rein OpenGL basierend, und man erstellt nur ein Fenster mit der WinApi, wo man dann seine Scene reinrendert. Ich habe ja schon ein OpenGL Fenster, nur ich schaffe es nicht in mein zweites Fenster das dazustellen, was ich in einer Resourcendatei eingestellt habe.
Oder wie ich direkt ein Teil in einem Dialog (den ich auch mit dem MS MFC Wizard) erstellt habe einen kleinen Teil zum Rendern freigebe (ohne das ich zwei Fenster erstelle).
-
MFC kapselt lediglich die WinApi, wo also liegt das Problem? Jede von CWnd abgeleitete Object hat auch sein HWND (m_hWnd) und schon kannst du NEHE 1:1 übernehmen (einfach in OnCreate() OGl Initialisierung vornehmen).
Classwizard kannst du aber getrost vergessen. Du gehst eben zu Fuß, wenn du sowas machen.Bei dem "kleinen" Bereich für OGL brauchst du doch nur dein Fenster als Childfenster einzupassen.