Zum Inhalt springen

Windows Media Player 9 einbinden


Narf!

Empfohlene Beiträge

Schönen guten Tag an alle,

ich habe mal dieses Thema erstellt, weil mein Thema Umstellung von VC 6.0 auf VC .NET unübersichtlich wird, was den Media Player betrifft.

Hier nochmal meine bisherige Vorgehensweise:

Ich habe mit VC++ .NET eine dialogfeldbasierende MFC-Win32-Anwendung erstellt, in die ich den WMP 9 über ActiveX eingebunden habe. Die ID ist ID_OCX1_MedPlay und die Control-Variable ist m_cMedPlay.

Es wurde eine Wrapper-Klasse erstellt, auf die ich mit m_cMedPlay Zugriff habe.

Nun mein Problem:

In der Wrapper-Klasse sind nicht die Funktionen enthalten, die ich brauche. Z.Bsp. double get_CurrentPosition(), welche mir die aktuelle Position in einer Sound-Datei angibt.

Klotzkopp hat folgendes dazu geschrieben:

Dann schau dir die Interface IWMPCore* und IWMPPlayer* an, da sollte alles dabei sein, was du brauchst.

Wie komme ich an die Interfaces ran?

Ich habe mir aus der MSDN Code-Beispiele runtergeladen (wmphost, usw.), die mir aber nicht weitergeholfen haben.

Hat jemand 'ne Idee?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie komme ich an die Interfaces ran?

Wie meinst du das?

AFAIK brauchst du das Media SDK um die nötigen Biblitheken und so zu bekommen.

Um das Interface anzulegen solltest du dich ein bischen mit dem Component Object Model (COM) beschäftigen, falls du dich damit noch nicht auskennst:)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Um den WMP als Element der ToolBox hinzu zufügen, muss man den als COM-Objekt auswählen.

Man setzt in der Liste einen Haken, und das war's.

Danach zieht man den WMP auf den Dialog und setzt die Variable.

Mehr habe ich nicht dazu getan.

Ich weiß, dass ich mir aus Active-X-Elementen weitere Klassen erstellen lassen kann. Das habe ich auch mit den WMP-Klassen gemacht, die die entsprechenden Funktionen hatten.

Aber wie weiter? Denn wenn ich eine Instanz-Variable auf diese Klassen erstelle, komme ich zwar an die Funktionen, aber es passiert nichts. Mit instanz.put_Filename("Datei.wav/mp3"); müsste der WMP das Abspielen anfangen, tut er aber nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Also, ich habe mich exakt an die Hilfe aus der MSDN gehalten, habe alles so gemacht, wie es da stand, aber es stimmt nichts von den beschriebenen Ergebnissen.

Zugegeben, es ist ja auch für VC++ 6.0 ausgeschrieben. Mit dem WMP 7.1 hat es damals genau so hingehauen. Da hatte ich alle Funktionen, die ich brauchte, nur durch das Setzen der Control-Variable auf das ActiveX-Control.

Warum macht es der 9er so kompliziert, oder liegt es an VC++ 7?

Hat jemand Erfahrungen mit dem 9er und VC++ 7?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

So, nun habe ich das mit den Interfaces auch ein bisschen verstanden.

Es sieht jetzt so aus:


ProgramDlg.h:


#pragma once

#include "ocx1_medplay.h" //die Wrapper-Klasse vom MediaPlayer

#include "E:\WMSDK\WMPSDK9\include\wmp.h" //die wmp.h aus dem SDK


ProgramDlg.cpp:


void CProgramDlg::OnBnClickedButton10()

 {

  m_cMedPlay.put_URL("Datei.mp3");  //hiermit lade ich eine Datei in den Player; wird abgespielt

 }//end void CProgramDlg::OnBnClickedButton10()


void CProgramDlg::OnBnClickedButton2Pos()

 {

  double Pos=0.0;


  IWMPControls::get_currentPosition(&Pos); //hiermit wollte ich die aktuelle Position anzeigen lassen, aber: s.u.

 }//end void CProgramDlg::OnBnClickedButton2Pos()


Fehlermeldung:

f:\ProgramDlg.cpp(100) : error C2352: 'IWMPControls::get_currentPosition::IWMPControls::get_currentPosition':

Unzulässiger Aufruf einer nicht statischen Memberfunktion e:\WMSDK\WMPSDK9\include\wmp.h(1342): Siehe Deklaration von 'IWMPControls::get_currentPosition'

Erst seit die wmp.h aus dem SDK drin ist, komme ich an die Interfaces ran.

Was mache ich denn falsch!?!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...