Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

  • Autor

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

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

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

  • Autor

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.