Video in Dialog darstellen
-
Hallo,
ich weiß nicht, ob ich jetzt im MFC-Forum richtig bin oder ob ich ins DirectX-Forum hätte schreiben sollen. Naja, ich versuchs einfach mal:
Also, ich möchte ein Video mit DirectShow (DirectX SDK 9) abspielen. Das funkt auch schon super. Nun möchte ich das Video aber nicht in einem extra Fenster anzeigen, sondern in meinem Dialog platzieren. Das versuche ich so:
pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin1); pVidWin1->put_Owner((OAHWND)GetSafeHwnd()); //Erscheinungsbild fürs Ausgabefenster festlegen pVidWin1->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS); //Kind und Fensterrahmen entfernen GetDlgItem(IDC_VIDEO)->GetWindowRect(&r); //Größe des Static-Fensters abfragen ScreenToClient(&r); //in Fensterkoordinaten umrechnen pVidWin1->SetWindowPosition(r.left,r.top,r.Width(),r.Height()); //Video auf Positions setzen und dementsprechend skalieren pVidWin1->put_MessageDrain((OAHWND)GetSafeHwnd()); //Ereignisse vom Videofenster holen
Leider wird das Video immernoch im extra Fenster angezeigt. Mach ich was falsch??
LG ... Drea
-
Ich nochmal:
Hab mitbekommen, dass mein GetSaveHwnd() nix zurück gibt. Dann kanns ja auch nich gehen.
Allerdings brauche ich ja zum Positionieren des Videofensters ne HWND-Variable. Wenn ich allerdings this->m_hwnd mache steht dort nix drin.
Das Problem: Mein Dialogelement liegt in einer PropertyPage. Wie bekomme ich dann diese HWND-Variable ran??
LG .. Drea
-
Wo genau steht denn dein Code?
-
Also, der Code steht in der Dialogklasse von der PropertyPage (abgeleitet von CPropertyPage). Genauergesagt in einer Ereignisprozedur ... wenn ich auf einen Button klicke.
Das PropertySheet wird in der Hauptapplikation gestartet. Und zwar in der InitInstance:
CPropSheet dlg("MeinPropertySheet"); m_pMainWnd = &dlg; dlg.m_psh.dwFlags = PSH_NOAPPLYNOW | PSH_PROPSHEETPAGE; INT_PTR nResponse = dlg.DoModal();
Auch hier kann ich die HWND-Variable nicht abfragen. Sie ist scheinbar immer nicht gesetzt
-
Nochwas:
Das hwnd wird scheinbar nur gesetzt, wenn die PropertyPage-Klasse ein OnInitDialog hat. Das Problem ist nur, wenn ich dieses OnInitDialog aufrufe, dann startet mein Propertypage nichmehr. Es blinkt nur kurz auf und verschwindet gleich wieder ... und die Anwendung wird beendet!
Ich hasse Propertypages!!!
--> So, musste einfach mal gesagt werden