Anfänger Problem (mit PlayMP3 und Drag'n'Drop)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Anfänger Problem (mit PlayMP3 und Drag'n'Drop)

Beitrag von Lukaso »

Moins,

ich versuche einen MP3-Player der anderen Art zu Coden, ist eigentlich mein erstes teil das ich Code. Nun habe ich gleich ein Problem. Irgendwie verträgt sich das PlayMP3() nicht mit dem Drag & Drop, egal was ich reindroppe er Spielt nix ab. Wenn ich aber der PlayMP3() eine Datei direkt zuweise z.b. PlayMP3("C:\123.mp3") dann geht es. Verzweifle schon ....

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Gadget_0
EndEnumeration

Global Image0

Image0 = CatchImage(0, ?Image0)

DataSection
Image0:
  IncludeBinary "snd.ico"
EndDataSection

Procedure.l DropFiles ()
  ProcedureReturn EventwParam ()
EndProcedure
 
Procedure GetNumDropFiles (*dropFiles)
  ProcedureReturn DragQueryFile_ (*dropFiles, $FFFFFFFF, temp$, 0)
EndProcedure

Procedure.s GetDropFile (*dropFiles, index)
  bufferNeeded = DragQueryFile_ (*dropFiles, index, 0, 0)
  For a = 1 To bufferNeeded: buffer$ + " ": Next
  DragQueryFile_ (*dropFiles, index, buffer$, bufferNeeded+1)
  ProcedureReturn buffer$
EndProcedure

Procedure FreeDropFiles (*dropFiles)
  DragFinish_ (*dropFiles)
EndProcedure

Procedure PlayMP3(mp.s)
  MCISendString_("CLOSE MP3",0,0,0)
  Buffer$=Space(128)
  MCISendString_("OPEN "+ mp +" TYPE MpegVideo ALIAS MP3",Buffer$,128,0)
  MCISendString_("PLAY MP3",0,0,0)
EndProcedure

Procedure SetWinOpacity (hwnd.l, Opacity.l)
  SetWindowLong_(hwnd, #GWL_EXSTYLE, $00080000)
  If OpenLibrary(1, "user32.dll")
    CallFunction(1, "SetLayeredWindowAttributes", hwnd, 0, Opacity, 2)
    CloseLibrary(1)
  EndIf
EndProcedure

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 310, 153, 48, 48,  #PB_Window_BorderLess| #PB_Window_ScreenCentered , "")
      If CreateGadgetList(WindowID())
        ImageGadget(#Gadget_0, 0, 0, 48, 48, Image0)
          SetWinOpacity(WindowID(), 100)
      EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat
    DragAcceptFiles_ (WindowID(), 1)
  Select WaitWindowEvent ()
      Case #WM_DROPFILES
      *dropped = DropFiles ()
      num.l = DragQueryFile_ (*dropped , $FFFFFFFF, temp$, 0)
      f$ = ""
      For files = 0 To num - 1
        f$ + GetDropFile (*dropped, files) + Chr (13)
      Next
      PlayMP3(f$)
      FreeDropFiles (*dropped)
  EndSelect
ForEver
Danke für jede Hilfe!

MFG Lukaso

Edit by NicTheQuick: Quote-Tags durch Code-Tags ersetzt
Benutzeravatar
Rings
Beiträge: 971
Registriert: 29.08.2004 08:48

Beitrag von Rings »

das kommt davon wenn man einfach code-schnipsel 1:1 kopiert.
Aber nix für ungut, schlieslich bist du Anfänger:

Mache bei der schleife das Chr() getönes raus und es funktioniert ;)

Code: Alles auswählen

For files = 0 To num - 1 
        f$ + GetDropFile (*dropped, files) + Chr (13) 
      Next 
      PlayMP3(f$) 
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Hallo Rings,

auf diese Idee bin ich auch schon gekommen, nur leider liegt der Fehler nicht darin, ich habe schon alles mögliche probiert, nur irgendwie komm ich zu keiner lösung ..... Habe schon alles Untersucht, er gibt alles Richtig aus (Pfad zur Datei) aber es Funktioniert nicht ..... /:->

MFG Lukaso
Benutzeravatar
AndyMars
Beiträge: 139
Registriert: 08.09.2004 11:59
Computerausstattung: Win10 Home 64bit, i7-2600k @ 3.4 GHz, 8GB RAM, AMD Radeon R9 200
Wohnort: Zürich, Schweiz
Kontaktdaten:

Beitrag von AndyMars »

Rings hat schon recht - wozu soll der chr(13) gut sein? Lass ihn weg. Dann eine Frage: Gibt es in dem Pfad zu der MP3 Datei ein Leerzeichen? Wenn ja, sollte das die Lösung sein:

mciSendString_("OPEN " + Chr(34) + mp + Chr(34) + " TYPE MpegVideo ALIAS MP3",buffer$,128,0)

Gruss AndyMars

Edit - chr(13): Ah ja, Du willst mehrere Dateien übergeben. Ich glaube aber nicht, dass das möglich ist mit dieser PlayMP3() Prozedur - der kannst Du nur eine Datei auf einmal übergeben...
Benutzeravatar
Lukaso
Beiträge: 720
Registriert: 08.09.2004 18:51
Wohnort: Oberkirch
Kontaktdaten:

Beitrag von Lukaso »

Hallo,

Danke für deinen Tip, jetzt Funktionierts :mrgreen:
Das mit mehreren Dateien, kommt auch, sobald das gerüst Fertig ist :wink:

MFG Lukaso
Benutzeravatar
redacid
Beiträge: 581
Registriert: 29.08.2004 17:06

Beitrag von redacid »

nächstes mal bitte eine aussagekräftigere Überschrift wählen! :)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1754
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

redacid hat geschrieben:_________________
Ich bin J-The-Grey aus dem "alten" Forum!
Die Signatur wartet sehnlichst auf PB für MacOS.
Warum eigentlich die Namensänderung ?
Möchtest Du mit "redacid" wieder an alte Amiga-Zeiten anknüpfen? :wink:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten