probleme de clignotement

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

probleme de clignotement

Message par venom »

bonjour a tous sa faiser un moment que j'avais pas poster un message :D alors voila.

j'ai reussi a metre de la couleur sur ma fenetre mais le probleme c'est que quand je lance mon programme la couleur clignote avant d'afficher mes button voici mon code vous verrer mieu par vous meme 8O

Code : Tout sélectionner

Procedure WindowCallback(WindowID, Message, lParam, wParam)

StartDrawing(WindowOutput())
DrawImage(UseImage(0), 10, 45, 635, 320)
StopDrawing()

  
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure


If InitMovie() = 0 
MessageRequester("Erreur", "Impossible de lire des vidéos", 0) 
End 
EndIf 

Enumeration 
    #Window_0 
EndEnumeration 


Enumeration 
    #liste 
    #play 
    #StopMovie 
    #LoadImage
    #PauseMovie 
    #AffichageCurseurLecture 
    #volume 
EndEnumeration 

Procedure Rafraichir(Valeur.l) 
 
Repeat 
Delay(Valeur) 
Position = MovieStatus() 
If Position > 0 
SetGadgetState(#AffichageCurseurLecture, Int(1000 * Position / MovieLength())) 
EndIf 
ForEver 
EndProcedure 

Date$ = FormatDate("%dd/%mm/%yyyy", Date()) 
Time$ = FormatDate("%hh:%ii:%ss", Date()) 
MessageRequester("bienvenue a audio player 1.0", "nous sommes le    :  "+Date$+Chr(10)+"il est exactement  :"+Time$, 0) 

If OpenWindow(0, 0, 0, 700, 400 , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered , "audio player 1.0") 

Gosub CreateImage
 SetWindowCallback(@WindowCallback())

    If CreateGadgetList(WindowID()) 
        ButtonGadget(#liste, 2, 1, 138, 30, "LISTE ~~") 
        ButtonGadget(#play, 140, 1, 140, 30, "LECTURE >") 
        ButtonGadget(#PauseMovie, 280, 1, 140, 30, "PAUSE II", #PB_Button_Toggle ) 
        ButtonGadget(#StopMovie, 420, 1, 140, 30, "STOP #") 
        ButtonGadget(#LoadImage, 560, 1, 140, 30, "repeat") : DisableGadget(3,1)       
        ProgressBarGadget(#AffichageCurseurLecture, 10, 377, 680, 15, 0, 1000, #PB_ProgressBar_Smooth) 
        
        TrackBarGadget(#volume,677, 60, 20,285,0,100, #PB_TrackBar_Vertical) 
        TextGadget    (10, 676,40,200, 20,"son") 
        TextGadget    (20, 677,350,200, 20,"son")
        TextGadget    (30, 652,328,200, 20,"0")
        TextGadget    (40, 650,62,200, 20,"100")
        TextGadget    (50, 650,196,200, 20,"50")
EndIf 
EndIf 
SetGadgetState(#volume, 50) :volume=50

Repeat 
      
    Event = WaitWindowEvent()   
    
    If Event = #PB_EventGadget         
        
        Select EventGadgetID() 
            
            Case #volume 
                volume = GetGadgetState(#volume) 
                MovieAudio(volume, Balance) 
                
            Case #liste 
                NomFichier$ = OpenFileRequester("Titre", "::{450d8fba-ad25-11d0-98a8-0800361b1103}\", "Fichiers|*.*", 0) 
                LoadMovie(1, NomFichier$) 
                
            Case #play 
                PlayMovie(1, WindowID()) 
                ResizeMovie(150, 50, MovieWidth(), MovieHeight())  
                ThreadID = CreateThread(@Rafraichir(), 250) 
                
            Case #StopMovie 
                StopMovie() 
                KillThread(ThreadID) ; 
                
            Case #LoadImage
                CreateImage:
If CreateImage(0, 255, 255)

StartDrawing(ImageOutput())

For k=0 To 255
FrontColor(k,150, k)
Line(0, k, 255, 0)
Next

DrawingMode(1)
Locate(63, 40)
FrontColor(255,255,255) 
DrawText("AUDIO PLAYER 1.0")

StopDrawing() 
EndIf
CopyImage(0, 1)
ResizeImage(1, 100, 100)
GrabImage(0, 2, 100, 60, 150, 40)
Return
                     
           Case #PauseMovie 
             If GetGadgetState(#PauseMovie) = 1 
                PauseMovie() 
             Else 
                ResumeMovie() 
EndIf                
EndSelect 
EndIf 
    
Until Event = #PB_EventCloseWindow 

End
voila j'espert que quelquin sait comment faire car moi je ne trouve pas :cry:
mais bon avec les gars d'ici je ne pense pas que sa sera un gros probleme :D
aller @++
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Pour le clignognotement, mets l'appel de la callback après la création des gadgets.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 700, 400 , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered , "audio player 1.0") 
  
  Gosub CreateImage 
  ; SetWindowCallback(@WindowCallback()) 
  
  If CreateGadgetList(WindowID()) 
    ButtonGadget(#liste, 2, 1, 138, 30, "LISTE ~~") 
    ButtonGadget(#play, 140, 1, 140, 30, "LECTURE >") 
    ButtonGadget(#PauseMovie, 280, 1, 140, 30, "PAUSE II", #PB_Button_Toggle ) 
    ButtonGadget(#StopMovie, 420, 1, 140, 30, "STOP #") 
    ButtonGadget(#LoadImage, 560, 1, 140, 30, "repeat") : DisableGadget(3,1)        
    ProgressBarGadget(#AffichageCurseurLecture, 10, 377, 680, 15, 0, 1000, #PB_ProgressBar_Smooth) 
    
    TrackBarGadget(#volume,677, 60, 20,285,0,100, #PB_TrackBar_Vertical) 
    TextGadget    (10, 676,40,200, 20,"son") 
    TextGadget    (20, 677,350,200, 20,"son") 
    TextGadget    (30, 652,328,200, 20,"0") 
    TextGadget    (40, 650,62,200, 20,"100") 
    TextGadget    (50, 650,196,200, 20,"50") 
  EndIf 
EndIf 
SetGadgetState(#volume, 50) :volume=50
 
SetWindowCallback(@WindowCallback()) 
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Au niveau de la callback, il y a un truc qui ne me parait pas trop correct, non plus.
Il faudrait prendre l'avis des autres, mais selon moi, tu ne devrais pas utiliser la callback pour y mettre des fonctions sans, au minimum, récupérer au moins un des paramètres qui serait la condition de l'execution de la fonction.

Toi, tu fais ça.

Code : Tout sélectionner

Procedure WindowCallback(WindowID, message, lParam, wParam)
      StartDrawing(WindowOutput()) 
      DrawImage(UseImage(0), 10, 45, 635, 320) 
      StopDrawing() 
    
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 
L'image est redessinée sans arret.

Alors que moi, je ferais ça:

Code : Tout sélectionner

Procedure WindowCallback(WindowID, message, lParam, wParam)
  Select message
    Case #WM_PAINT
      StartDrawing(WindowOutput()) 
      DrawImage(UseImage(0), 10, 45, 635, 320) 
      StopDrawing() 
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 
pour que l'image ne soit redessinnée que quand c'est nécéssaire.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Oui, c'est mieux
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

merci a vous les gean de m'avoir aider mais j'ai un autre peti souci :( :?
quand je refait mon code avec votre idee a vous y me met la ligne la

Code : Tout sélectionner

DrawImage(UseImage(0), 10, 45, 635, 320)
ligne 4 en noir comme quoi ya une erreur donc je sait pas si c parce que g la version demo merci de m'avoir aider et desol encore :?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

A la place de Case #WM_PAINT, mets Case #PB_Event_Repaint dans la callback.

C'est parce que tu as la version Demo. Il ne veut pas des constantes qui font partie de l'Api.
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

ok chris merci je vai essayer plu tar la chu pas sur mon pc je vous tiendrer au courant :wink: :D
@++
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

bin j'ai fait une autre manipulation sans faire expret et sa marche regarder

Code : Tout sélectionner

Procedure WindowCallback(WindowID, Message, lParam, wParam) 

StartDrawing(WindowOutput()) 
DrawImage(UseImage(0), 10, 45, 635, 320) 
StopDrawing() 

  
ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 


If InitMovie() = 0 
MessageRequester("Erreur", "Impossible de lire des vidéos", 0) 
End 
EndIf 

Enumeration 
    #Window_0 
EndEnumeration 


Enumeration 
    #liste 
    #play 
    #StopMovie 
    #LoadImage 
    #PauseMovie 
    #AffichageCurseurLecture 
    #volume 
EndEnumeration 

Procedure Rafraichir(Valeur.l) 
  
Repeat 
Delay(Valeur) 
Position = MovieStatus() 
If Position > 0 
SetGadgetState(#AffichageCurseurLecture, Int(1000 * Position / MovieLength())) 
EndIf 
ForEver 
EndProcedure 

Date$ = FormatDate("%dd/%mm/%yyyy", Date()) 
Time$ = FormatDate("%hh:%ii:%ss", Date()) 
MessageRequester("bienvenue a audio player 1.0", "nous sommes le    :  "+Date$+Chr(10)+"il est exactement  :"+Time$, 0) 

If OpenWindow(0, 0, 0, 700, 400 , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered , "audio player 1.0") 
  
Gosub CreateImage 
  
  If CreateGadgetList(WindowID()) 
    ButtonGadget(#liste, 2, 1, 138, 30, "LISTE ~~") 
    ButtonGadget(#play, 140, 1, 140, 30, "LECTURE >") 
    ButtonGadget(#PauseMovie, 280, 1, 140, 30, "PAUSE II", #PB_Button_Toggle ) 
    ButtonGadget(#StopMovie, 420, 1, 140, 30, "STOP #") 
    ButtonGadget(#LoadImage, 560, 1, 140, 30, "repeat") : DisableGadget(3,1)        
    ProgressBarGadget(#AffichageCurseurLecture, 10, 377, 680, 15, 0, 1000, #PB_ProgressBar_Smooth) 
    
    TrackBarGadget(#volume,677, 60, 20,285,0,100, #PB_TrackBar_Vertical) 
    TextGadget    (10, 676,40,200, 20,"son") 
    TextGadget    (20, 677,350,200, 20,"son") 
    TextGadget    (30, 652,328,200, 20,"0") 
    TextGadget    (40, 650,62,200, 20,"100") 
    TextGadget    (50, 650,196,200, 20,"50") 
  EndIf 
EndIf
 
SetGadgetState(#volume, 50) :volume=50 
  
SetWindowCallback(@WindowCallback()) 


Repeat 
      
    Event = WaitWindowEvent()    
    
    If Event = #PB_EventGadget          
        
        Select EventGadgetID() 
            
            Case #volume 
                volume = GetGadgetState(#volume) 
                MovieAudio(volume, Balance) 
                
            Case #liste 
                NomFichier$ = OpenFileRequester("Titre", "::{450d8fba-ad25-11d0-98a8-0800361b1103}\", "Fichiers|*.*", 0) 
                LoadMovie(1, NomFichier$) 
                
            Case #play 
                PlayMovie(1, WindowID()) 
                ResizeMovie(150, 50, MovieWidth(), MovieHeight())  
                ThreadID = CreateThread(@Rafraichir(), 250) 
                
            Case #StopMovie 
                StopMovie() 
                KillThread(ThreadID) ; 
                
            Case #LoadImage 
                CreateImage: 
If CreateImage(0, 255, 255) 

StartDrawing(ImageOutput()) 

For k=0 To 255 
FrontColor(k,150, k) 
Line(0, k, 255, 0) 
Next 

DrawingMode(1) 
Locate(63, 40) 
FrontColor(255,255,255) 
DrawText("AUDIO PLAYER 1.0") 

StopDrawing() 
EndIf 
CopyImage(0, 1) 
ResizeImage(1, 100, 100) 
GrabImage(0, 2, 100, 60, 150, 40) 
Return 
                      
           Case #PauseMovie 
             If GetGadgetState(#PauseMovie) = 1 
                PauseMovie() 
             Else 
                ResumeMovie() 
EndIf                
EndSelect 
EndIf 
    
Until Event = #PB_EventCloseWindow 

End
voila je vais essayer de trouver des autres chose a faire sur mon lecteur :wink: merci et
@++ les gean
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

j'aure une autre question a vous poser desol mais je voudrer savoir le code pour pouvoir choisir que des fichier wav mp3 midi car la c'est pour tout les fichier a cette ligne la

Code : Tout sélectionner

NomFichier$ = OpenFileRequester("Titre", "::{450d8fba-ad25-11d0-98a8-0800361b1103}\", "Fichiers|*.*", 0)
plus precisement la

Code : Tout sélectionner

"Fichiers|*.*"
car si je remplace par mp3 et wave sa change pas je voudrer pouvoir choisir que des wave mp3 et midi si c'est possible car la si je pren un jpeg ou bitmapou video sa fonctionne donc voila ma question mais bon je continue a chercher si je trouve avant que l'un de vous lie ce message je previendrer :wink:
@++
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Code:
NomFichier$ = OpenFileRequester("Titre", "::{450d8fba-ad25-11d0-98a8-0800361b1103}\", "Fichiers|*.*", 0)

plus precisement la
Code:
"Fichiers|*.*"
Essaie comme ça:

Code : Tout sélectionner

"Fichiers son|*.wav;*.mp3;*.mid"
et tu peux rajouter autant d'extensions que tu veux...
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Quelle est la différence entre les deux codes, à part l'appel de la callback que tu as déplacé "sans le faire exprès", alors que c'est exactement ce que je te disais de faire dans le post précédent.(Bien que, finalement, ce ne soit pas utile, mais je n'avais pas regardé le reste du code)

Je te mets le code que j'ai modifié, selon la manière dont je le vois.
Tu en fais ce que tu veux :)

Code : Tout sélectionner

;- Tu déclares les constantes utilisées
Enumeration 
  #Window_0 
EndEnumeration 

Enumeration 
  #liste 
  #play 
  #StopMovie 
  #LoadImage 
  #PauseMovie 
  #AffichageCurseurLecture 
  #volume 
EndEnumeration
 
;- Tu testes si tu peux initialiser la lecture des films
If InitMovie() = 0 
  MessageRequester("Erreur", "Impossible de lire des vidéos", 0) 
  End 
EndIf 

;- Si oui, tu crée une image pour ta fenêtre
If CreateImage(0, 255, 255) 
  StartDrawing(ImageOutput()) 
  For k=0 To 255 
    FrontColor(k,150, k) 
    Line(0, k, 255, 0) 
  Next 
  DrawingMode(1) 
  Locate(63, 40) 
  FrontColor(255,255,255) 
  DrawText("AUDIO PLAYER 1.0") 
  StopDrawing() 
EndIf 

;- Tu mets les procédures
Procedure WindowCallback(WindowID, message, lParam, wParam)
  ;/ Une fois que ton image est en mémoire, la callback te la rafraîchit
  ;/ à chaque fois que c'est nécéssaire.
  
  Select message
    Case #PB_Event_Repaint
      StartDrawing(WindowOutput()) 
      DrawImage(UseImage(0), 10, 45, 635, 320) 
      StopDrawing() 
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 

Procedure Rafraichir(Valeur.l) 
  Repeat 
    Delay(Valeur) 
    Position = MovieStatus() 
    If Position > 0 
      SetGadgetState(#AffichageCurseurLecture, Int(1000 * Position / MovieLength())) 
    EndIf 
  ForEver 
EndProcedure 

;- Tu mets ça aussi, si tu veux ;o)
Date$ = FormatDate("%dd/%mm/%yyyy", Date()) 
Time$ = FormatDate("%hh:%ii:%ss", Date()) 
MessageRequester("bienvenue a audio player 1.0", "nous sommes le    :  "+Date$+Chr(10)+"il est exactement  :"+Time$, 0) 

;- Tu ouvres ta fenêtre si tout a été initialisé correctement
If OpenWindow(0, 0, 0, 700, 400 , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered , "audio player 1.0") 
  ;/ Une fois ta fenêtre ouverte, tu peux lancer la callback
  SetWindowCallback(@WindowCallback()) 
  
  ;/ Tu installes ensuite tes gadgets
  If CreateGadgetList(WindowID()) 
    ButtonGadget(#liste, 2, 1, 138, 30, "LISTE ~~") 
    ButtonGadget(#play, 140, 1, 140, 30, "LECTURE >") 
    ButtonGadget(#PauseMovie, 280, 1, 140, 30, "PAUSE II", #PB_Button_Toggle ) 
    ButtonGadget(#StopMovie, 420, 1, 140, 30, "STOP #") 
    ButtonGadget(#LoadImage, 560, 1, 140, 30, "repeat") : DisableGadget(3,1)        
    ProgressBarGadget(#AffichageCurseurLecture, 10, 377, 680, 15, 0, 1000, #PB_ProgressBar_Smooth) 
    
    TrackBarGadget(#volume,677, 60, 20,285,0,100, #PB_TrackBar_Vertical) 
    TextGadget    (10, 676,40,200, 20,"son") 
    TextGadget    (20, 677,350,200, 20,"son") 
    TextGadget    (30, 652,328,200, 20,"0") 
    TextGadget    (40, 650,62,200, 20,"100") 
    TextGadget    (50, 650,196,200, 20,"50") 
  EndIf 
EndIf 
SetGadgetState(#volume, 50) :volume=50 

;- Et tu fais ta boucle
Repeat 
  Event = WaitWindowEvent()    
  If Event = #PB_EventGadget          
    Select EventGadgetID() 
      
      Case #volume 
        volume = GetGadgetState(#volume) 
        MovieAudio(volume, Balance) 
        
      Case #liste
        ;/ Si tu ne testes pas "NomFichier$", et que tu cliques sur ce bouton
        ;/ quand une musique ou un film sont en route, la lecture va s'arreter
        ;/ au cas ou tu cliques ensuite sur "Annuler" dans la boîte de sélection.
        NomFichier$ = OpenFileRequester("Titre", "::{450d8fba-ad25-11d0-98a8-0800361b1103}\", "Fichiers|*.*", 0) 
        If NomFichier$
          LoadMovie(1, NomFichier$) 
        EndIf
        
      Case #play 
        PlayMovie(1, WindowID()) 
        ResizeMovie(150, 50, MovieWidth(), MovieHeight())  
        ThreadID = CreateThread(@Rafraichir(), 250) 
        
      Case #StopMovie 
        StopMovie() 
        KillThread(ThreadID) ; 
        
      Case #PauseMovie 
        If GetGadgetState(#PauseMovie) = 1 
          PauseMovie() 
        Else 
          ResumeMovie() 
        EndIf                
    EndSelect 
  EndIf 
Until Event = #PB_EventCloseWindow 
End
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

exelent je te remerci c'est exactement ca merci filperj de ton aide :wink:
ainci que tout ce qui m'on jentiment repondue en prenant de leur temps :wink: merci a vous les gars
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

merci chris pour avoir retaper le code je vais garder le tien qui va mieu que le mien car le mien les gadget mette du temps a arriver quand j'ouvre le programme merci :wink:
Répondre