Page 1 sur 1

fenetre premier plan, ou transparent 50%/image incorporée/..

Publié : sam. 14/janv./2006 18:01
par david
voici une partie de mon pg, j'aurais voulu que !
1.d'un clic sur un des boutons l'iamge en arriere plan dans la fentre soit modifiée mais ça ne marche pas....
2.que le programme aille dans Mesdocuments/mes images/... et change d'image automatiquement toutes les 15 secondes.. je n'y arrive pas et en plus je ne parviens pas à redimensionner et centrer l'image dans la fenetre
2. une fenetre qui soit totalement visible (et/ou transparente à 50%... (en cliquant sur un bouton)


Code : Tout sélectionner

;- Window Constants 
; 
Enumeration 
   #Window_0 
EndEnumeration 

;- Gadget Constants 
; 
Enumeration 
   #Button_1 
   #Button_2 
   #Button_3 ;...... 
EndEnumeration 

LoadImage(10, "C:\gaby1.bmp")   ;image de depart
LoadImage(11, "C:\gaby2.bmp")   ;image en cas de clic sur bouton
img=1
image=1
a=0 
textb=21 
textb$=Str(textb) 

MessageRequester("Compteur Info", "version spéciale les GG", 0) 


If OpenWindow ( #Window_0 , 216, 0, 465, 331, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Compteur Atouts" ) 
   If CreateGadgetList ( WindowID ()) 
      

   If image=1
    ImageGadget(10, 10,10,100,83,UseImage(10)) 
EndIf
     If image=2
    ImageGadget(11, 10,10,100,83,UseImage(11)) 
EndIf

       
      ButtonGadget ( #Button_1 , 10, 10, 30, 30, "1" ) 
      ButtonGadget ( #Button_2 , 40, 10, 30, 30, "2" ) 
      ButtonGadget ( #Button_3 , 70, 10, 30, 30, "3" ) 
  
 EndIf  

    
   ;La boucle Repeat-Until sert à la gestion des évènements 
  
  

   If image=1
    ImageGadget(10, 10,10,100,83,UseImage(10)) 
EndIf
     If image=2
    ImageGadget(11, 10,10,100,83,UseImage(11)) 
EndIf
  
  
   Repeat 
      
      EventID.l= WaitWindowEvent () ; on récupère un évènement 
      Select EventID ; on sélectionne cet évènement 
         Case #PB_EventGadget ; cet évènement concerne une action sur un Gadget 
            Select EventGadgetID () ; dans ce cas, on récupère l'identifiant du gadget qui l'a créé 
               Case #Button_1 ; on compare l'identifiant à #ButtonGadget 
                  a=1
                  If textb-a<0
                  a=0
                  EndIf 
                  textb=textb-a 
                  SetGadgetText(#String_0,Str(textb)) 
                  
               Case #Button_2 ; on compare l'identifiant à #ButtonGadget 
                  a=2
                  If textb-a<0
                  a=0
                  EndIf 
                  textb=textb-a 
                  SetGadgetText(#String_0,Str(textb)) 
                  
               Case #Button_3 ; on compare l'identifiant à #ButtonGadget 
                  a=3
                  If textb-a<0
                  a=0
                  EndIf 
                  textb=textb-a 
                  SetGadgetText(#String_0,Str(textb)) 
 
   
            EndSelect 
            
         Case #PB_Event_CloseWindow ; cet évènement concerne la fermeture de la fenêtre 
               Quit=1 
            
            
      EndSelect 
 
   Until Quit=1 
 EndIf

Publié : sam. 14/janv./2006 18:09
par Backup
c'est quand meme curieux , des mecs qui debarque d'on ne sait ou....
qui se presente meme pas, et d'entrée il demande de l'aide ....

ça ressemble a des mec aillant une version pas tres catholique du Pure hum... (depuis qu'une version traine sur la mule on n'a jamais autant eu de nouveau adherents .. hum ...)

Publié : sam. 14/janv./2006 18:12
par CameleonTH
Et puis se sujet à deja était étudier plusieurs et ils y a mes des exemples un peu partout.

Publié : sam. 14/janv./2006 18:23
par david
je me presente, je m'apelle david, j'ai achete purebasic il y a deux ans pour un peu plus de 40 euros (commandé à fred et payé par chèque postal). je m'y suis mis un peu à l'epoque et je n'y ai plus touché pendant tres lontemps cause probleme sante. j'ai trouvé une idée et sympa qui me motive à me raccrocher mes il me faut encore beaucoup travailler. en attendant tout ce que je demande je l'ai cherché dans les sujets abordés et si je demande de l'aide c'est parcque aussi débutant qu'on me pardonne d'être j'ai essayé de me les approprier mais que je n'ai pas réussi.
alors merci de m'aider ou pas, mais priere de ne pas me juger sans me connaitre

Publié : sam. 14/janv./2006 18:26
par Backup
ben j'ai encore fait une gaffe :lol: :lol:

Publié : sam. 14/janv./2006 19:04
par Backup
voila ! :D

bouton 1 = image 1
bouton2 = image 2
bouton 3 = image qui change toute les secondes !!
la fenetre est 50% transparente
tu veux quoi d'plus ? :D




UseJPEGImageDecoder ()
UsePNGImageDecoder ()
UseTGAImageDecoder ()
UseTIFFImageDecoder ()

Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Declare SetWinTransparency(WinHandle.l, Transparency_Level.l)
Global bouton,flag,Handle

;- Gadget Constants
;
Enumeration
     #Window_0
     #Button_1
     #Button_2
     #Button_3 ;......
     #String_0
     #image_gadget1
     #image_gadget2
     #image1
     #image2
EndEnumeration

LoadImage ( #image1 , "C:\gaby1.bmp" ) ;image de depart
LoadImage ( #image2 , "C:\gaby2.bmp" ;image en cas de clic sur bouton
ResizeImage ( #image1 , 100, 83 )
ResizeImage ( #image2 , 100, 83)

img=1
image=1
a=0
textb=21
textb$= Str (textb)
MessageRequester ( "Compteur Info" , "version spéciale les GG" , 0)

If OpenWindow ( #Window_0 , 216, 0, 465, 331, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Compteur Atouts" )
    Handle = WindowID (0)
    
     If CreateGadgetList ( WindowID ())
         ImageGadget ( #image_gadget1 , 10,50,100,83, UseImage ( #image1 ))
         ButtonGadget ( #Button_1 , 10, 10, 30, 30, "1" )
         ButtonGadget ( #Button_2 , 40, 10, 30, 30, "2" )
         ButtonGadget ( #Button_3 , 70, 10, 30, 30, "3" )
     EndIf
    
    
    
     ;SetTimer_(Handle, 2, 200, @TimerProc()) ; envoie un evenement toutes les 200 millisecondes
     ;SetTimer_(Handle, 3, 3000, @TimerProc()) ; envoie un evenement toutes les 3000 millisecondes
    
    SetWinTransparency ( WindowID (), 127) ; =50%
    
     ;La boucle Repeat-Until sert à la gestion des évènements
     Repeat
        
        EventID.l= WaitWindowEvent () ; on récupère un évènement
         Select EventID ; on sélectionne cet évènement
             Case #PB_EventGadget ; cet évènement concerne une action sur un Gadget
                 Select EventGadgetID () ; dans ce cas, on récupère l'identifiant du gadget qui l'a créé
                     Case #Button_1 ; on compare l'identifiant à #ButtonGadget
                        a=1
                         If textb-a<0
                            a=0
                         EndIf
                        textb=textb-a
                         ; SetGadgetText(#String_0,Str(textb)) <--- tu voulais faire quoi avec ça ??????
                        image=1
                         SetGadgetState ( #image_gadget1 , UseImage ( #image1 ))
                        bouton=1
                     Case #Button_2 ; on compare l'identifiant à #ButtonGadget
                        a=2
                         If textb-a<0
                            a=0
                         EndIf
                        textb=textb-a
                         ; SetGadgetText(#String_0,Str(textb)) <--- tu voulais faire quoi avec ça ??????
                        image=2
                         SetGadgetState ( #image_gadget1 , UseImage ( #image2 ))
                        bouton=2
                     Case #Button_3 ; on compare l'identifiant à #ButtonGadget
                        a=3
                         If textb-a<0
                            a=0
                         EndIf
                        textb=textb-a
                         ; SetGadgetText(#String_0,Str(textb)) <--- tu voulais faire quoi avec ça ??????
                        
                        bouton=3
                         SetTimer_ (Handle, 1, 1000, @TimerProc()) ; envoie un evenement toutes les 1 secondes
                 EndSelect
                
             Case #PB_Event_CloseWindow ; cet évènement concerne la fermeture de la fenêtre
                Quit=1
         EndSelect
        
     Until Quit=1
EndIf



Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
     Select uMsg
         Case #WM_TIMER
             Select idEvent
                 Case 1
                     Debug "--------------------15 seconde"
                     ; Ici, le code à executer toutes les (15) secondes
                     If bouton=3 ; le gars a appuyé sur le bouton 3 ?
                         If flag=1
                             SetGadgetState ( #image_gadget1 , UseImage ( #image1 ))
                            flag=0
                         Else
                             SetGadgetState ( #image_gadget1 , UseImage ( #image2 ))
                            flag=1
                         EndIf
                     EndIf
                    
                    
                    
                 Case 2
                     Debug "0.2 secondes"
                     ; Ici, le code à executer toutes les 200 millisecondes
                 Case 3
                     Debug "-------------------------------------------3 secondes"
                     ; Ici, le code à executer toutes les 3 secondes
             EndSelect
     EndSelect
EndProcedure

; Pour changer le niveau de transparence de la fenêtre
   ; Le niveau de transparence doit être compris entre 1 (transparence totale) et 255 (opaque)

Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
     SetWindowLong_ (WinHandle, #GWL_EXSTYLE , GetWindowLong_ (WinHandle, #GWL_EXSTYLE ) | $00080000) ; #WS_EX_LAYERED = $00080000
     If OpenLibrary (0, "user32.dll" )
         CallFunction (0, "SetLayeredWindowAttributes" , WinHandle, 0, Transparency_Level, 2)
         CloseLibrary (0)
     EndIf
EndProcedure

Publié : sam. 14/janv./2006 21:05
par david
ben pas grave pour la gaffe, en même temps tu ne pouvais pas te douter. en plus c'est vrai qu'il y a plein de gens qui piratent et téléchargent illégalement, faudrait des fois penser aux auteurs!
en tous cas tu es mille fois pardonné avec ce qe tu as fait c'est vraiment super sympa.
dedeans il y a plein de lignes de code que je ne connait pas que je vais décortiquer pour bien les comprendre et maîtriser quelques fonctions supplémentaires.
encore merci

Publié : sam. 14/janv./2006 21:29
par Backup
de rien ! :D

premier plan

Publié : sam. 14/janv./2006 23:31
par david
j'ai trouvé dans les exemples la fonction

SetWindowPos_()

pour mettre la fentre au premier plan mais je n'arrive pas à la laisser toujours devant le reste

Publié : sam. 14/janv./2006 23:34
par david
je cherche depuis une heure, je tape ma question en continuant de chercher et, ouah je viens de trouver tout seul...

c'est plus la peine.

merci pour tout

Re: premier plan

Publié : sam. 14/janv./2006 23:36
par Gillou
Pour mettre une fenêtre toujours au premier plan il faut que tu mettes le paramètre HWND_TOPMOST


ProcedureDLL SetWindowPos( WindowID , State) ; Permet de mettre la fenêtre en arrière, au premier plan,...
     ; #HWND_BOTTOM
     ; #HWND_TOPMOST
     ; #HWND_NOTOPMOST
     ; HWND_TOP
     SetWindowPos_ ( WindowID , state, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE )
EndProcedure



EX :


SetWindowPos( WindowID (), #HWND_TOPMOST )