PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit TMediaPlayer und C++



Blackice
16-02-2003, 19:22
Moigens,

ich wollt grad ma nen kleinen MediaPlayer mitm C++ Builder schreiben.
Ich gebe also den Film in nem Panel auf ner extra Form aus und unter Delphi löse ich das Problem der Gößenanpassung des Panels so:

Form2.Panel1.Height := MediaPlayer1.DisplayRect.BottomRight.y;
Form2.Panel1.Width := MediaPlayer1.DisplayRect.BottomRight.x;
Form2.Height := MediaPlayer1.DisplayRect.BottomRight.y;
Form2.Width := MediaPlayer1.DisplayRect.BottomRight.x;

nur leider gibts bei C++ keine Eigenschaft
MediaPlayer1->DisplayRect->BottomRight->x
da is bei DisplayRect schluss.

Wie bekomme ich das denn nun hin, dass sich das Panel anpasst?


achja und hat jemand zufällig ne Komponente um das Ganze auch auf Fullscreen umzuschalten?
Greetz Blackice

anda_skoa
17-02-2003, 10:17
Was bedeutet "ist Schluss"?
Kompilerfehler?
Wenn ja, was ist die Meldung?

Vielleicht ist DisplayRect keine Variable sondern eine Funktion.

Probier mal
MediaPlayer1->DisplayRect().BottomRight().x()


Ciao,
_

Blackice
17-02-2003, 14:43
na schluss bedeutet, dass DisplayRect keine weiteren Eigenschaften hat.

und ...->DisplayRect()->.... funzt auch nich

das heir bietet die hilfe dazu:
__property Windows::TRect DisplayRect = {read=GetDisplayRect, write=SetDisplayRect};

Beschreibung

Soll die Anzeige in einem speziellen Rechteckbereich eines Formulars erfolgen, weisen Sie DisplayRect einen TRect-Datensatz zu. Ein TRect-Datensatz kann mit der Funktion Rect erstellt werden.

In der Regel erzielen Sie bei Medien, deren Ausgabe in einem rechteckigen Bereich erfolgt, mit der Standardgröße von DisplayRect die besten Ergebnisse. Positionieren Sie den rechteckigen Bereich in der oberen linken Ecke und geben Sie das Wertepaar 0,0 für die rechte untere Ecke des Bereichs an, um DisplayRect auf die Standardgröße zu setzen.

Wenn die Eigenschaft Display NULL ist, wird DisplayRect ignoriert.

Animation, AVI Video, Digital Video, Overlay und VCR sind Beispiele für Multimedia-Geräte, die zur Anzeige der Ausgabe ein Fenster benutzen.

Hinweis

DisplayRect kann nur gesetzt werden, wenn das Multimedia-Gerät geöffnet ist.

anda_skoa
17-02-2003, 15:08
Original geschrieben von Blackice
na schluss bedeutet, dass DisplayRect keine weiteren Eigenschaften hat.

und ...->DisplayRect()->.... funzt auch nich

das heir bietet die hilfe dazu:
__property Windows::TRect DisplayRect = {read=GetDisplayRect, write=SetDisplayRect};


Ja, das hilft weiter.
Das "read=..." bedeutet, dass die Funktion zum Lesen des Properties, also der Eigenschaft, DisplayRect, GetDisplayRect heißt.

Also muss es bei dir heißen
...->GetDisplayRect()

Ciao,
_

Blackice
17-02-2003, 17:08
also entweder bin ich zu blöd oder zu sehr Anfänger:

in Delphi hab ich ja das hier

Form2.Panel1.Height := MediaPlayer1.DisplayRect.BottomRight.y;

wie muss denn das jetzt in C++ heißen?

MediaPlayer1->GetDisplayRect();

willer nich.

Wie dann? (sorry falls die Frage jetzt zu doof is)

Greetz Blackice

ReSeT
17-02-2003, 17:15
Also, wenn MediaPlayer1 kein Zeiger auf ein Objekt ist muß es



MediaPlayer1.GetDisplayRect();


heissen.

GreetZ

ReSeT

Blackice
17-02-2003, 17:17
hmm ne MediaPlayer1.GetDisplayRect is ja erstens Delphi Code (will das ganze ja in C++ haben) und zweiten gehts da auch anders

(so nämlich
Form2.Panel1.Width := MediaPlayer1.DisplayRect.BottomRight.x;
)

ReSeT
17-02-2003, 17:24
MediaPlayer1.GetDisplayRect is ja erstens Delphi Code


hm, nö nicht zwangsläufig.

Hierbei ist GetDisplayRect() eine Methode des Objektes (oder vielmehr der Instanz dessen) MediaPlayer1.

Blackice
17-02-2003, 18:27
na also das hier frisst er jedenfalls nícht bei mir:
MediaPlayer1.GetDisplayRect();

anda_skoa
17-02-2003, 18:36
Original geschrieben von Blackice
na also das hier frisst er jedenfalls nícht bei mir:
MediaPlayer1.GetDisplayRect();

Wenn du uns keine Fehlermelding postest, können wir immer nur raten, wo das Problem liegt.

Nach dem was du gepostet hast, lieftert die Funktion GetDisplayRect() eine TRect Instanz zurück.
Die hat dann entweder Variablen oder Methoden um auf ihre Werte zuzugreifen.

Ciao,
_

Blackice
17-02-2003, 19:30
ne wat mir nich klar ist, ist wie die Syntax aussieht um auf GetDisplayRect zuzureifen.
und um ehrlich zu sein, weiss ich nich was ne Instanz is (oder ich weisses nur unter nem andern namen)

anda_skoa
17-02-2003, 19:41
Eine Instanz ist ein Object einer Klasse, der Speicher um die Daten einer Klasse aufzunehmen.

Praktische einer Variable vom Typ der Klasse.

MediaPlayer1 ist vermutlich entweder eine Instanz der Klasse MediaPlayer oder ein Pointer auf eine Instanz.
Pointer ist wahrscheinlicher.

Wenn es eine normale Instanz ist, dann führst du die Methode GetDisplayRect so aus


TRect rect = MediaPlayer1.GetDisplayRect();


Wenn es ein Pointer auf eine Instanz ist


TRect rect = MediaPlayer1->GetDisplayRect();


Ciao,
_