TMediaPlayer - Ungültiges Fensterhandle
-
Sobald ich eine Datei öffnen lassen möchte, sagt mir der TMediaPlayer "Ungültiges Fensterhandle".
Wenn ich ErrorMessage Auslesen lasse kommt heraus:
"Ungültige MCI-Gerätekennung. Benutzen Sie die zurückgegebene ID, wenn sie das MCI-Gerät öffnen."Hier noch ein paar Infos:
1. die Zeiger auf TMediaPlayer ist in einer Klasse von mir deklariert, nicht in einer Form(klasse), hat daher auch keine Oberfläche
2. Code:void SimplePlayer::OpenFromPlaylist(int Index) { try { ShowMessage ( Playlist->Strings[Index]); //Player-> Player->FileName = Playlist->Strings[Index]; Player->Open(); } catch(...) { ShowMessage(Player->ErrorMessage); // Hier ausgabe der 2. Fehlermeldung } }
class SimplePlayer { private: TStringList* Playlist; bool plays; unsigned int Position; TMediaPlayer* Player; int ID; public: inline void Initialise() { Player = new TMediaPlayer(this); Player->TimeFormat = tfMilliseconds; Player->DeviceType = dtAutoSelect; Playlist = new TStringList; plays = false; Position = 0; } void AddtoPlaylist(String FileName); void OpenFromPlaylist(int Index); void Play(); void Pause(); void Stop(); void SetPosition(unsigned int Posi); void SetDisplayRect(TRect rect); void VideoPanel(TPanel* Panel); TStringList* GetPlaylist(); };
Ich hoffe ich bin demnächts nicht mehr so ratlos
-
Player = new TMediaPlayer(this);
Als Owner des MediaPlayers solltest du eine Form-Klasse angeben (SimplePlayer ist ja keine). Du könntest auch versuchen einfach den Standardkonstruktor zu verwenden:
Player = new TMediaPlayer();
Oder eben den Owner als Parameter zu übergeben...
-
inline void Initialise(TForm* Parent) { Player = new TMediaPlayer(Parent); Player->TimeFormat = tfMilliseconds; Player->DeviceType = dtAutoSelect; Playlist = new TStringList; plays = false; Position = 0; }
oder:
inline void Initialise(TForm* Parent) { Player = new TMediaPlayer(Parent->Owner); Player->TimeFormat = tfMilliseconds; Player->DeviceType = dtAutoSelect; Playlist = new TStringList; plays = false; Position = 0; }
hat die Folge das: "Element hat kein übergeordnetes Fenster" ausgegeben wird.
Kann es sein, dass das nichts wird ? - Ich TMediaPlayer auf einer Form haben MUSS?
-
Du solltest zusätzlich auch noch den Parent setzen:
Player->Parent = Parent;