Danke, damit kann ich schonmal was anfangen
Zur Erklärung:
Konkret geht es darum dass wir gerade eine Software gröber umschreiben die Videos darstellt.
Der Video-Player (DirectShow) ist dabei in einen eigenen Thread gewandert. Da drinnen wird der Filter-Graph gebaut, das Video positioniert, das Video gewechselt wenn eines aus ist etc. Eigener Thread macht auch Sinn, da das Filter-Graph bauen gerne mal 1-2 Sekunden dauern kann. Die Applikation soll in der Zeit allerdings "responsive" bleiben.
Ursprünglich haben wir den VMR7 im Windowed-Mode verwendet. Das hat nun aber Probleme gemacht, da wir als Parent für das Fenster des Players ein Fenster verwendet haben, welches im Main-Thread erstellt wurde. Und dann im "Player-Thread" das Fenster des Players als Child "attached" haben, und wieder "detached" uswusf. Was zu nem lustigen Deadlock geführt hat (eigene CRITICAL_SECTION im Player-Thread gelockt -> verstecktes SendMessage, selbe CRITICAL_SECTION gleichzeitig im Main-Thread gelockt -> kein Message-Dispatching mehr bis CS verfügbar -> deadlock).
Nun hab ich mich nach einer Lösung umgesehen, und es einfach mal mit dem Windowless-Mode des VMR7 probiert. Scheint gut zu funktionieren (die Deadlocks waren vorher so-gut-wie bei jedem Video-Wechsel, seit der Umstellung kein Problem mehr beobachtet). In der MSDN steht auch dass einer der Vorteile des Windowless-Mode der ist, dass man nicht so leicht nen Deadlock durch Window-Messages bastelt, da der Renderer eben kein eigenes Fenster verwendet.
Allerdings muss man immer noch das Fenster als "Clip Window" setzen, und da hab ich mich dann gefragt, ob selbst das wirklich so 100% problemlos ist. Oder ob es nur zu gehen scheint, weil an weniger Stellen Messages an das "Clip Window" gesendet werden.
Da der Player-Thread zum korrekten Clippen die sichtbaren Teile des Fensters ermitteln muss, wollte ich wissen, ob das wirklich ohne SendMessage geht.
Was die DC-Sache angeht: das war reine Neugier. Ich gehe davon aus dass der VMR7 keinen DC zum Rendern verwendet, aber wenn man selbst etwas ähnliches basteln wollte, z.B. ohne DirectDraw/Direct3D, dann würde man sich vermutlich einen DC zum Zeichnen des Videos besorgen. Daher die Frage ob das überhaupt problemlos möglich wäre.