Woher bekommst du dein IVideoWindow? Möglicherweise liegt da der Hase begraben:
Zitat von
Microsoft:
Both the Video Renderer Filter and the Filter Graph Manager expose this interface. Applications should use the Filter Graph Manager's version of this interface. The Filter Graph Manager forwards all method calls to the Video Renderer. It also forwards certain window messages, such as WM_DISPLAYCHANGE, that the Video Renderer requires in order to update itself. If you make the video window into a child window, the window no longer receives these messages directly. Thus, it relies on the Filter Graph Manager to forward them.
Du musst also dein IVideoWindow vom Filter Graph Manager bekommen und nicht etwa vom Video Renderer. Wenn du es schon vom Filter Graph Manager bekommst, dann ist das nicht der Fehler ;c)
Probier das Umschalten doch mal in einem Timer. Wenn die Umschaltung dann funktioniert, stehen die Chancen gut, dass das da oben der Fehler ist. Ansonsten wäre es ganz praktisch, wenn du deinen Initialisierungscode zeigen würdest.
Die Antwort auf die zweite Frage lautet meines Wissens wie folgt:
In GraphEdit kannst du nur DirectShow-Filter anschauen. Wenn du es geschafft hast, einen eigenen DirectShow-Filter zu schreiben und zum Laufen zu bekommen, sollte seine Registrierung für dich trivial sein. Du kannst GraphEdit NICHT verwenden, um den Graph innerhalb deiner Anwendung zu begutachten, du kannst ihn nur nachbauen.
[EDIT]
Oh, da habe ich das mit dem RemoteConnect bei dir überlesen. Du hast aber offenbar dafür in der Hilfe von GraphEdit überlesen, dass das
DirectX SDK dafür den Artikel "Loading a Graph From an External Process" bereithält, in dem genau dein Problem beschrieben wird.
[/EDIT]