AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Vollbild mit DirectX
Thema durchsuchen
Ansicht
Themen-Optionen

Vollbild mit DirectX

Ein Thema von wsks · begonnen am 17. Mär 2004 · letzter Beitrag vom 19. Mär 2004
Antwort Antwort
wsks

Registriert seit: 16. Mär 2004
9 Beiträge
 
#1

Vollbild mit DirectX

  Alt 17. Mär 2004, 16:41
Hallo,
ich habe einen MPPlayer auf DirectX-Basis geschrieben. Das Viedeo wir bei mir in einem
eigenen Fenster ausgegeben nun möchte ich gerne mit klick auf das Fenster in den Vollbildmodus
wechseln bzw. wieder zurück. ABER: ONCLICK wird nicht ausgewertet.
Hat jemand eine Idee woran das liegt?

Hier ein wenig Code:

Delphi-Quellcode:
VW : IVideoWindow = nil; //DirectShow

procedure TVideoout.vollbild;
var fs:longbool;
begin
  vw.get_FullScreenMode(fs);
  if fs then
       vw.put_FullScreenMode(false)
  else vw.put_FullScreenMode(true);
  end;

procedure TVideoout.FormClick(Sender: TObject);
begin
  Vollbild;
end;
Noch eine Frage in diesem Zusammenhang. Ich würde gerne mit Graphedit meine Graphen
mit Remote-Connect ansehen im Graphedit sehe ich aber meine Application nicht. In der
Hilfe von Graphedit steht Zitat:'The application must register the filter graph
instance in the Running Object Table (ROT).'
Wer kann mir helfen, wo muss die Application registriert werden.
Vielen Dank!
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#2

Re: Vollbild mit DirectX

  Alt 17. Mär 2004, 16:57
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]
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
wsks

Registriert seit: 16. Mär 2004
9 Beiträge
 
#3

Re: Vollbild mit DirectX

  Alt 17. Mär 2004, 17:08
Hallo nochmal,
habe mich da wohl unglücklich ausgedrückt. Also in den Vollbildmodus kann ich wechseln z.Zt. mit Hotkey auch jederzeit und immer hin und her. ABER: nicht mit der Maus.
ONCLICK wird nicht ausgewertet.
Danke
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#4

Re: Vollbild mit DirectX

  Alt 17. Mär 2004, 17:14
Ja, dann gibt es eine realistische Chance, dass dein IVideoWindow dein VideoRenderer ist. Damit dein Fenster Nachrichten auswerten kann (gesetzt den Fall, das VideoWindow ist ein Child), musst du aber den Filter Graph Manager als IVideoWindow nehmen.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Skiron

Registriert seit: 14. Dez 2003
153 Beiträge
 
#5

Re: Vollbild mit DirectX

  Alt 17. Mär 2004, 18:14
wenn du directX verwendest:
benutzt du die komponenten?
denn dann wird onClick der Komponente ausgeführt!
Mann zu Frau:
Zieh dich aus, wir müssen reden!
  Mit Zitat antworten Zitat
wsks

Registriert seit: 16. Mär 2004
9 Beiträge
 
#6

Re: Vollbild mit DirectX

  Alt 18. Mär 2004, 17:03
Hallo, Komponenten habe ich bisher nicht genutzt. Die ganze Geschichte findet aus bestimmten Gründen unter win95 und Delphi 5- gibt es da Komponenten?
Der Click das weiss ich nun wird nicht ausgewertet weil natürlich das AKTIV MOVIE WINDOW davor liegt. Kann ich irgendwie von diesem Fenster Botschaften empfangen?
Wer weiss Rat?
DANKE vor allen an die, die sich schon meiner Sache angenommen haben.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#7

Re: Vollbild mit DirectX

  Alt 18. Mär 2004, 18:02
Hörst du mir überhaupt zu?
Natürlich liegt das Videofenster vor deinem. Deshalb musst du auch unbedingt das IVideoWindow-Interface vom FilterGraphManager verwenden und nicht vom Videorenderer. Das ist mit ziemlicher Sicherheit dein Fehler, denn der FilterGraphManager leitet Nachrichten im Gegensatz zum VideoRenderer weiter. Also zeige doch mal den Code, in dem du die IVideoWindow-Schnittstelle besorgst.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
wsks

Registriert seit: 16. Mär 2004
9 Beiträge
 
#8

Re: Vollbild mit DirectX

  Alt 19. Mär 2004, 15:26
@Oregon Ghost
Sorry, aber ich war ein wenig Konfus.
Aber ich habe eigentlich alles richtig gemacht aber folgendes vergessen:

vw.put_MessageDrain(videoout.Handle); und
die Abfrage über

Delphi-Quellcode:
procedure TVideoout.maus_clickL(var Maus_msg: TWMMouse);
begin
   if maus_msg.Msg=WM_LButtonDown then Vollbild;
end;
Für Deine Hinweise möchte ich mich recht herzlich bedanken und wünsche ein schönes Wochenende.
DANKE
wsks
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz