Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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:)

Geschrieben

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.

  • 2 Wochen später...
Geschrieben

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?

  • 2 Wochen später...
Geschrieben

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!?!

Geschrieben

Bedeutet das, dass ich mir aus der wmp.h z.Bsp. die Klasse IWMPControls erstellen lasse, dann in der Funktion, in der ich die Position abfrage, eine Instanzvariable erstelle und dann erst an die Funktionen rankomme?

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...