OpenGL-Animation in zwei Dialogen
-
Hallo,
ich versuche eine Anwendung zu schreiben, bei der in zwei Dialogen gleichzeitig eine OpenGL-Animation angezeigt wird. Wenn ich ganz normal nur mit ShowWindow arbeite, wird der Inhalt nur im zuletzt erzeugten Fenster aninmiert. Daher habe ich versucht das zweite Fenster in einem Thread zu öffnen. Prinzipiell funktioniert das auch. Nur leider öffnen sich beim Thread zwei Fenster. Das erste ist das eigentliche Fenster was geöffnet werden soll. Für den OpenGL-Inhalt öffnet sich jedoch noch ein weiteres Fenster. Im ersten fehlt also der animierte Inhalt und im zweiten der graue Rahmen innerhalb des Dialoges (der OpenGL-Inhalt wird durch Dialogelemente optisch unterteilt). So kann ich es jedenfalls definitiv nicht lassen. Hat jemand einen Lösungsansatz? Oder eine Idee, wie ich die Animation in beiden Fenstern auch ohne Threads laufen lassen kann?
Hier noch die wichtigsten Quellcodeabschnitte:
Durch Betätigung eines Buttons im Hauptfenster wird das zweite Fenster geöffnet und folgendes ist der Threadinhalt:
patientDlg = new CMovingHumanDlgPatient; patientDlg->Create(CMovingHumanDlgPatient::IDD); patientDlg->SetInitializeValues(current,target,openGLControl); //hier wird der OpenGL-Animation der Zeichenkontext übergeben patientDlg->DoModal();
Der entsprechende Ausschnitt im patientDlg, bei dem der Zeichenkontext übergeben wird in SetInitializeValues:
CRect rect; GetDlgItem(IDC_PATIENT_WINDOW)->GetWindowRect(rect); ScreenToClient(rect); this->openGLControl = COpenGLControl::New(rect, this ,current, target);
und der wichtige Teil in der OpenGL-Klasse:
COpenGLControl::COpenGLControl(CRect rect, CWnd* parent, SegmentValues *current, SegmentValues *target) { dc = NULL; CString className = AfxRegisterWndClass( CS_HREDRAW | CS_VREDRAW | CS_OWNDC, NULL, (HBRUSH)GetStockObject(BLACK_BRUSH), NULL); CreateEx( 0, className, "OpenGL", WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, rect, parent, 0);
Grüße ...
-
Du tanzt auf zwei Hochzeiten:
http://social.msdn.microsoft.com/Forums/de-DE/visualcplusde/thread/dc7d9108-36d6-4f30-a6cc-9b3a878afba7