WS_CHILD, WS_CLIPCHILDREN 98se/XP Unterschied?
-
Hallo,
Ich verstehe die Welt nicht mehr, folgenden Code muß ich schreiben, damit ein DirectShow Videofenster in mein Hauptfenster gebettet werden kann als Child, das Funktioniert gut und nur so unter Win98se, aber unter WinXP muß ich die letzte Zeile mit dem Style weglassen damit es geht, denn sonst habe ich nur ein kleines abgeschnittenes Kästchen statt 720x576, aber auch als eingebettes Child, nur ab und zu auch wieder als eigenständiges Fenster, was funktioniert da bei XP nicht, was bei 98se keine Probleme macht?
Der Codeabschnitt:
if (FilterCheck && FPinCheck && RenderCheck) { dsVideoWindow->put_Owner((int)HauptWindowHandle); dsVideoWindow->SetWindowPosition(5, 24, 720, 576); dsVideoWindow->put_WindowStyle(WS_CHILD | WS_CLIPCHILDREN); }PS: Auch wenn ihr euch jetzt nicht mit DirectShow (DirectX) auskennt, das Video Fenster ist ein normales Fenster auf dem das Bild ausgegeben wird, daher ganz nach der Art der WinAPI.
thx
-
Wenn du WS_CLIPCHILDREN einschaltest, solltest du auch gleich WS_CLIPSIBLINGS nehmen. Ich habe vor kurzem gelesen, dass irgendwas nur funktioniert, wenn die beiden eingeschaltet sind - kann mich aber leider nicht mehr genau erinnern, was das war. Ich glaub es war OpenGL, aber vielleicht hat ja DirectShow die gleiche Einschränkung.
-
Nope, leider nicht.
WS_CLIPSIBLINGS macht das kleine Clip Rechteck nur größer
Ich kann ja auf die Version prüfen und bei XP das weg lassen, das Problem ist nur, das es nicht immer bei XP eingebettet ist als Child, sondern ab und an, btw. recht oft als eigenes Fenster kommt.
-
LOL, ich habs raus.
Ich muß erst mit get_WindowStyle(&StyleLong) den aktuellen Style holen (ist unterschiedlich zwischen den Systemen) und dann Anpassen.