Page 1 sur 1

Besoin d'aide pour ma source

Publié : lun. 22/oct./2007 14:53
par MetalOS
Salut tous le monde, voila je cherche à faire un petit player audio dons voici le code source (attention ce n'est pas terminer, c juste un début et il reste encore beaucoup de bugs). Mais je cherche à en corriger un en particulier.

Code : Tout sélectionner

;/ Created with PureVisionXP v4.03
;/ Mon, 22 Oct 2007 06:26:16
;/ by MetalOS

#MMSYSERR_NOERROR       = 0
#MIXER_SHORT_NAME_CHARS = 16
#MIXER_LONG_NAME_CHARS  = 64
Structure MIXERCONTROL
  cbStruct.l
  dwControlID.l
  dwControlType.l
  fdwControl.l
  cMultipleItems.l
  szShortName.s[#MIXER_SHORT_NAME_CHARS]
  szName.s[#MIXER_LONG_NAME_CHARS]
  lMinimum.l
  lMaximum.l
  reserved.l[10]
EndStructure

;---------Initialisation du module video------------------------------
If InitMovie() = 0
  MessageRequester("Erreur", "Impossible d'inisialisé le Média", 0)
  End
EndIf
;---------------------------------------------------------------------


;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0

;- Window Constants
Enumeration 1
  #Window_Form1
  #Window_Form2
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue


;- Gadget Constants
Enumeration 1
  ;Window_Form1
  #Gadget_Form1_xPureSkin2
  #Gadget_Form1_ListViewGadget
  #Gadget_Form1_xTransButtonImage7
  #Gadget_Form1_xTransButtonImage8
  #Gadget_Form1_xTransButtonImage9
  #Gadget_Form1_xTransButtonImage10
  #Gadget_Form1_xTransButtonImage11
  #Gadget_Form1_TrackBar10
  #Gadget_Form1_xTransButtonImage12
  #Gadget_Form1_xTransButtonImage14
  #Gadget_Form1_HyperLink15


  ;Window_Form2
  #Gadget_Form2_Image17
  #Gadget_Form2_Text18
  #Gadget_Form2_Text19
  #Gadget_Form2_Text20
  #Gadget_Form2_Button22
  #Gadget_Form2_HyperLink23


EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue


;- Image Constants
Enumeration 1
  #Image_Form1_xPureSkin2
  #Image_Form1_xTransButtonImage7
  #Image_Form1_xTransButtonImage8
  #Image_Form1_xTransButtonImage9
  #Image_Form1_xTransButtonImage10
  #Image_Form1_xTransButtonImage11
  #Image_Form1_xTransButtonImage12
  #Image_Form1_xTransButtonImage13
  #Image_Form1_xTransButtonImage14


  #Image_Form2_Image17


EndEnumeration
#ImageIndex=#PB_Compiler_EnumerationValue


;- Load Images
If CreateFile(0,PVGadgets_TempDir()+"lecture.bmp")
  WriteData(0,?_OPT_Form1_xTransButtonImage7,?_OPT_Form1_xTransButtonImage7End-?_OPT_Form1_xTransButtonImage7)
  CloseFile(0)
EndIf
If CreateFile(0,PVGadgets_TempDir()+"precedent.bmp")
  WriteData(0,?_OPT_Form1_xTransButtonImage8,?_OPT_Form1_xTransButtonImage8End-?_OPT_Form1_xTransButtonImage8)
  CloseFile(0)
EndIf
If CreateFile(0,PVGadgets_TempDir()+"suivant.bmp")
  WriteData(0,?_OPT_Form1_xTransButtonImage9,?_OPT_Form1_xTransButtonImage9End-?_OPT_Form1_xTransButtonImage9)
  CloseFile(0)
EndIf
If CreateFile(0,PVGadgets_TempDir()+"stop.bmp")
  WriteData(0,?_OPT_Form1_xTransButtonImage10,?_OPT_Form1_xTransButtonImage10End-?_OPT_Form1_xTransButtonImage10)
  CloseFile(0)
EndIf
If CreateFile(0,PVGadgets_TempDir()+"pause.bmp")
  WriteData(0,?_OPT_Form1_xTransButtonImage11,?_OPT_Form1_xTransButtonImage11End-?_OPT_Form1_xTransButtonImage11)
  CloseFile(0)
EndIf
If CreateFile(0,PVGadgets_TempDir()+"quitter.bmp")
  WriteData(0,?_OPT_Form1_xTransButtonImage12,?_OPT_Form1_xTransButtonImage12End-?_OPT_Form1_xTransButtonImage12)
  CloseFile(0)
EndIf
If CreateFile(0,PVGadgets_TempDir()+"agrandir.bmp")
  WriteData(0,?_OPT_Form1_xTransButtonImage13,?_OPT_Form1_xTransButtonImage13End-?_OPT_Form1_xTransButtonImage13)
  CloseFile(0)
EndIf
If CreateFile(0,PVGadgets_TempDir()+"reduire.bmp")
  WriteData(0,?_OPT_Form1_xTransButtonImage14,?_OPT_Form1_xTransButtonImage14End-?_OPT_Form1_xTransButtonImage14)
  CloseFile(0)
EndIf
CatchImage(#Image_Form2_Image17,?_OPT_Form2_Image17)


DataSection
  _OPT_Form1_xPureSkin2:IncludeBinary "Skins\interface.pvs"
  _OPT_Form1_xTransButtonImage7:IncludeBinary "Images\lecture.bmp"
  _OPT_Form1_xTransButtonImage7End:
  _OPT_Form1_xTransButtonImage8:IncludeBinary "Images\precedent.bmp"
  _OPT_Form1_xTransButtonImage8End:
  _OPT_Form1_xTransButtonImage9:IncludeBinary "Images\suivant.bmp"
  _OPT_Form1_xTransButtonImage9End:
  _OPT_Form1_xTransButtonImage10:IncludeBinary "Images\stop.bmp"
  _OPT_Form1_xTransButtonImage10End:
  _OPT_Form1_xTransButtonImage11:IncludeBinary "Images\pause.bmp"
  _OPT_Form1_xTransButtonImage11End:
  _OPT_Form1_xTransButtonImage12:IncludeBinary "Images\quitter.bmp"
  _OPT_Form1_xTransButtonImage12End:
  _OPT_Form1_xTransButtonImage13:IncludeBinary "Images\agrandir.bmp"
  _OPT_Form1_xTransButtonImage13End:
  _OPT_Form1_xTransButtonImage14:IncludeBinary "Images\reduire.bmp"
  _OPT_Form1_xTransButtonImage14End:
  _OPT_Form2_Image17:IncludeBinary "Images\Logo.bmp"
EndDataSection

Procedure.l MIXER_getVolume(Type.l)
Protected dwVolume.l, result.l, hMixer
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED

  RtlZeroMemory_(ml,SizeOf(MIXERLINE))
  RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
  RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
  RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
 
  result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
  If result = #MMSYSERR_NOERROR
    ml\cbStruct        = SizeOf(MIXERLINE)
    ml\dwComponentType = Type
    result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
    If result = #MMSYSERR_NOERROR
      mlc\cbStruct      = SizeOf(MIXERLINECONTROLS)
      mlc\dwLineID      = ml\dwLineID
      mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
      mlc\cControls     = 1
      mlc\pamxctrl      = @mc
      mlc\cbmxctrl      = SizeOf(MIXERCONTROL)
      result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
      If result = #MMSYSERR_NOERROR
        mcd\cbStruct    = SizeOf(MIXERCONTROLDETAILS)
        mcd\dwControlID = mc\dwControlID;
        mcd\paDetails   = @mcdu
        mcd\cbDetails   = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
        mcd\cChannels   = 1
        result = mixerGetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
        If result = #MMSYSERR_NOERROR
          dwVolume = mcdu\dwValue
        EndIf       
      EndIf
    EndIf
  EndIf
 
  ProcedureReturn dwVolume 
EndProcedure

; newvolume va de 0 = 65535
Procedure MIXER_setVolume(Type.l, newvolume.l)
Protected ml.MIXERLINE, mlc.MIXERLINECONTROLS,mc.MIXERCONTROL,mcd.MIXERCONTROLDETAILS,mcdu.MIXERCONTROLDETAILS_UNSIGNED

  RtlZeroMemory_(ml,SizeOf(MIXERLINE))
  RtlZeroMemory_(mlc,SizeOf(MIXERLINECONTROLS))
  RtlZeroMemory_(mcd,SizeOf(MIXERCONTROLDETAILS))
  RtlZeroMemory_(mcdu,SizeOf(MIXERCONTROLDETAILS_UNSIGNED))
 
  result = mixerOpen_(@hMixer, 0, 0, 0, #MIXER_OBJECTF_HMIXER)
  If result = #MMSYSERR_NOERROR
    ml\cbStruct        = SizeOf(MIXERLINE)
    ml\dwComponentType = Type
    result = mixerGetLineInfo_(hMixer, @ml, #MIXER_GETLINEINFOF_COMPONENTTYPE)
    If result = #MMSYSERR_NOERROR
      mlc\cbStruct      = SizeOf(MIXERLINECONTROLS)
      mlc\dwLineID      = ml\dwLineID
      mlc\dwControlType = #MIXERCONTROL_CONTROLTYPE_VOLUME
      mlc\cControls     = 1
      mlc\pamxctrl      = @mc
      mlc\cbmxctrl      = SizeOf(MIXERCONTROL)
      result = mixerGetLineControls_(hMixer, @mlc, #MIXER_GETLINECONTROLSF_ONEBYTYPE)
      If result = #MMSYSERR_NOERROR
        mcdu\dwValue    = newvolume
        mcd\cbStruct    = SizeOf(MIXERCONTROLDETAILS)
        mcd\dwControlID = mc\dwControlID
        mcd\paDetails   = @mcdu
        mcd\cbDetails   = SizeOf(MIXERCONTROLDETAILS_UNSIGNED)
        mcd\cChannels   = 1
        result = mixerSetControlDetails_(hMixer, @mcd, #MIXER_SETCONTROLDETAILSF_VALUE)
        If result = #MMSYSERR_NOERROR
          ProcedureReturn #True
        Else
          ProcedureReturn #False
        EndIf
      EndIf
    EndIf
  EndIf
EndProcedure

NewList musique.s()

Procedure.l Window_Form1()
  If OpenWindow(#Window_Form1, 489, 239, 383, 342, "InfoProject Player", #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_WindowCentered|#PB_Window_Invisible)
    If CreatePopupMenu(0)        ; La création du menu contextuel commence...
      MenuTitle("Fichier")        ; Vous pouvez utiliser toutes les commandes relatives au menu,
        MenuItem(1, "Ouvrir un fichier")    ; comme si c'était un menu normal...
        MenuItem(2, "Quitter")
      MenuTitle("A propos...")
          MenuItem(3, "A propos d'InfoProject Player")
    EndIf
    If CreateGadgetList(WindowID(#Window_Form1))
      PureSkinMem(#Window_Form1,#Gadget_Form1_xPureSkin2,#Image_Form1_xPureSkin2,?_OPT_Form1_xPureSkin2,1)
       ListViewGadget(#Gadget_Form1_ListViewGadget, 40, 40, 295, 220, #PB_ListView_Multiselect)
       PureCOLOR_SetGadgetColor(#Gadget_Form1_ListViewGadget, $DC9C4B, $000000)
      PVGadgets_TransparentButtonImageGadget(#Gadget_Form1_xTransButtonImage7,110,270,30,30,PVGadgets_TempDir()+"lecture.bmp")
      PVGadgets_TransparentButtonImageGadget(#Gadget_Form1_xTransButtonImage8,75,270,30,30,PVGadgets_TempDir()+"precedent.bmp")
      PVGadgets_TransparentButtonImageGadget(#Gadget_Form1_xTransButtonImage9,145,270,30,30,PVGadgets_TempDir()+"suivant.bmp")
      PVGadgets_TransparentButtonImageGadget(#Gadget_Form1_xTransButtonImage10,40,270,30,30,PVGadgets_TempDir()+"stop.bmp")
      PVGadgets_TransparentButtonImageGadget(#Gadget_Form1_xTransButtonImage11,180,270,30,30,PVGadgets_TempDir()+"pause.bmp")
      TrackBarGadget(#Gadget_Form1_TrackBar10, 220, 275, 115, 20, 0, 655)
       PureCOLOR_SetGadgetColor(#Gadget_Form1_TrackBar10, 0, $6A6A6A)
       SetGadgetState(#Gadget_Form1_TrackBar10,MIXER_getVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS)/100)
      PVGadgets_TransparentButtonImageGadget(#Gadget_Form1_xTransButtonImage12,330,25,15,15,PVGadgets_TempDir()+"quitter.bmp")
      PVGadgets_TransparentButtonImageGadget(#Gadget_Form1_xTransButtonImage14,315,25,15,15,PVGadgets_TempDir()+"reduire.bmp")
      HyperLinkGadget(#Gadget_Form1_HyperLink15, 115, 25, 145, 15, "Player Version 0.2.", $1723D6)
       SetGadgetColor(#Gadget_Form1_HyperLink15, #PB_Gadget_BackColor , $303030)
       SetGadgetColor(#Gadget_Form1_HyperLink15, #PB_Gadget_FrontColor , $D0921E)
      PureSkinHide(#Window_Form1,0)
      ProcedureReturn WindowID(#Window_Form1)
    EndIf
  EndIf
EndProcedure


Procedure.l Window_Form2()
  If OpenWindow(#Window_Form2,434,185,400,182,"A propos ...",#PB_Window_ScreenCentered|#PB_Window_WindowCentered|#PB_Window_Invisible)
    If CreateGadgetList(WindowID(#Window_Form2))
      ImageGadget(#Gadget_Form2_Image17,5,5,154,146,ImageID(#Image_Form2_Image17))
      TextGadget(#Gadget_Form2_Text18,175,5,210,30,"",#PB_Text_Center)
        SetGadgetFont(#Gadget_Form2_Text18,LoadFont(#Gadget_Form2_Text18,"Georgia",16,0))
      TextGadget(#Gadget_Form2_Text19,250,40,60,15,"Version 0.2",#PB_Text_Center)
      TextGadget(#Gadget_Form2_Text20,175,70,210,45," ")
      ButtonGadget(#Gadget_Form2_Button22,175,130,210,15,"Ok")
      HyperLinkGadget(#Gadget_Form2_HyperLink23,5,160,255,15,"",12615680)
      PureSkinHide(#Window_Form2,0)
      ProcedureReturn WindowID(#Window_Form2)
    EndIf
  EndIf
EndProcedure

Procedure WindowCallback(WindowID,Message,wParam,lParam)
  ReturnValue=#PB_ProcessPureBasicEvents
  If Message=#WM_CTLCOLORSTATIC Or Message=#WM_CTLCOLOREDIT Or Message=#WM_CTLCOLORLISTBOX
    ReturnValue=PVDynamic_ColorGadget(lParam,wParam)
  EndIf

  ProcedureReturn ReturnValue
EndProcedure



;- Main Loop
If Window_Form1()
  SetWindowCallback(@WindowCallback())

  quitForm1=0
  Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()

    Select EventID
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Form1
          quitForm1=1
        EndIf

      Case #WM_LBUTTONDOWN
        If WindowID=#Window_Form1
          SendMessage_(WindowID(#Window_Form1),#WM_NCLBUTTONDOWN,#HTCAPTION,0)
        EndIf
        
      ;---------------Début PopupMenu---------------------------------------------------
      Case #WM_RBUTTONDOWN              ; Le bouton droit de la souris a été clické =>
          DisplayPopupMenu(0,WindowID(#Window_Form1))  ; On affiche le menu contextuel
        Case #PB_Event_Menu      ; Un élément du menu a été sélectionné
          Select EventMenu()     ; On recupère le numéro de cet élement...
            Case 1 
             ;-----------Ouverture du Media-------------------------------------------------------
               MovieName$ = OpenFileRequester("Ouvrir un fichier Audio", "", "Fichier Audio|*.mp3;*.wav;*.ogg;*.wma", 0, #PB_Requester_MultiSelection)
                Repeat
                 movie.l = position
                 AddGadgetItem(#Gadget_Form1_ListViewGadget,position,GetFilePart(MovieName$))
                 LoadMovie(position,MovieName$)
                 position = position + 1
                 AddElement(musique.s())
                 MovieName$ = NextSelectedFileName()
                Until MovieName$ = ""
          
       ;**************************************************************************************
            Case 2
             End 
            Case 3 
             Window_Form2()
          EndSelect
    ;----------------------------------------------------------------------------------

      Case #PB_Event_Gadget
        Select GadgetID
          Case #Gadget_Form1_xTransButtonImage7
          ;-------------Lecture-------------------------------------------------
           movie = GetGadgetState(#Gadget_Form1_ListViewGadget)
            If GetGadgetItemText(#Gadget_Form1_ListViewGadget,movie,0) <> ""
             If musique = 1
              StopMovie(0)
              musique = 0
             EndIf
              PlayMovie(movie,WindowID(#Window_Form1))
              musique = 1
            EndIf
          ;----------------------------------------------------------------------
          Case #Gadget_Form1_xTransButtonImage8
          Case #Gadget_Form1_xTransButtonImage9
          Case #Gadget_Form1_xTransButtonImage10
           ;------------------Stop------------------------------------
             StopMovie(0)
             musique = 0
           ;----------------------------------------------------------
          Case #Gadget_Form1_xTransButtonImage11
            ;-------------------Pause----------------------------------
             If musique = 1
              If pause = 0 
               PauseMovie(0)
               pause = 1
              ElseIf pause = 1
               ResumeMovie(0)
               pause = 0
              EndIf
             EndIf
            ;----------------------------------------------------------
          Case #Gadget_Form1_TrackBar10
           curvolume = GetGadgetState(#Gadget_Form1_TrackBar10)
           MIXER_setVolume(#MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,curvolume*100+36)
          Case #Gadget_Form1_xTransButtonImage12
           End
          Case #Gadget_Form1_xTransButtonImage14
           ShowWindow_(WindowID(#Window_Form1), #SW_MINIMIZE)
          Case #Gadget_Form1_HyperLink15
           Window_Form2()
          Case #Gadget_Form2_Button22
           CloseWindow(#Window_Form2)
          Case #Gadget_Form2_HyperLink23
           
        EndSelect  
    EndSelect
    
    
    
  Until quitForm1
  CloseWindow(#Window_Form1)
   
EndIf

PVGadgets_FreeTransparentGadgets(PVGadgets_TempDir())
End
Donc je lance mon player, et je fait un clic droit avec la souris pour pouvoir charger mon fichier. Au moment ou j'ouvre mon OpenFileRequester, je décide d'annuler le chargement de mon fichier, et la je me retrouve avec cette ligne souligner en rouge avec un message du compilateur " Movie filename not found", en plus ca me bloque mon player et impossible de le quitter je suis obliger d'arreter le programe avec l'ide.

Voici la ligne en question :

Code : Tout sélectionner

 LoadMovie(position,MovieName$)
elle ce trouve dans la partie ou j'utilise mon OpenFileRequester.

Quelqu'un pourrait me dire pourquoi j'ais cette erreur car la je seche.

Pour info j'utilise PureVisionXP, donc certaine ligne sont surement à suprimer pour ceux qui ne l'utilise pas. Merci pour vos réponses.

Publié : lun. 22/oct./2007 15:21
par Cls
Hello,

il faut tester le résultat de ta fonction OpenFileRequester() avant de continuer l'éxécution.

Utilises 'While : Wend' plutôt que 'Repeat : Until' : le repeat éxécutes une fois ton code avant de tester ton MovieName$.

Code : Tout sélectionner

While MovieName$ <> ""
   movie.l = position
   AddGadgetItem(#Gadget_Form1_ListViewGadget,position,GetFilePart(MovieName$))
   LoadMovie(position,MovieName$)
   position = position + 1
   AddElement(musique.s())
   MovieName$ = NextSelectedFileName()
Wend
Cordialement,
Cls

Publié : mar. 23/oct./2007 15:59
par MetalOS
Salut Cls et merci pour ta réponse, j'ais donc essayer avec While et Wend, et ca me donne toujours le même résultat. Mais quand je compile mon programme en executable mon programme ne plante pas en utilisant While,Wend ou en utilisant Repeat, Until. c'est assé bisard.

Publié : mar. 23/oct./2007 17:59
par comtois
dans la doc il y a cet exemple :

Code : Tout sélectionner

Fichier$ = OpenFileRequester("Choisissez un fichier à charger", FichierParDefaut$, Filtre$, Filtre)
  If Fichier$
    MessageRequester("Information", "Vous avez choisi le fichier suivant :"+Chr(10)+Fichier$, 0)
  Else
    MessageRequester("Information", "La sélection a été annulée.", 0)
  EndIf 
Dois-je en dire plus ?