Page 1 sur 1

Problème d'affichage avec buttonimageGadget

Publié : ven. 17/déc./2004 12:20
par Patix
Le code :
****************** Prog ne fonctionne pas
If OpenWindow(1, 100, 200, 210, 314,#PB_Window_SystemMenu, "Window 1") And CreateGadgetList(WindowID(1))

UseJPEGImageDecoder()
If LoadImage(70, "a:\terremeca2.jpg")
ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70))
; ImageGadget(7, 1,1,50,50,UseImage(70))
EndIf


Delay (8000)
CloseWindow(1)

EndIf

If OpenWindow(2, 100, 200, 195, 260, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget|#PB_Window_ScreenCentered, "PureBasic Window2")
Repeat
EventID.l = WaitWindowEvent()

If EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
EndIf

Until Quit = 1


EndIf


End
************
Dans ce petit prog : Imagegadget affiche l'image mais pas buttonimagegadget et je ne comprends pas.

j'ai fait un autre bout de code ou cela fonctionne .


************* prog fonctionne
If OpenWindow(0,0,0,120,100,#PB_Window_BorderLess|#PB_Window_ScreenCentered,"ButtonImage") And CreateGadgetList(WindowID(0))
UseJPEGImageDecoder()
If LoadImage(0, "a:\terremeca2.jpg")
ButtonImageGadget(0,1,1,119,99,UseImage(0))
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
*************

Si quelqu'un peut me donner la soluce, je suis preneur.

Patix

Publié : ven. 17/déc./2004 12:24
par Progi1984
Est ce que tu as une diskette dans ton lecteur a: et/ou as tu un image sur cette diskette ?

buttonimagegadget pb d'affichage

Publié : ven. 17/déc./2004 14:02
par Patix
bien sur qu'il y a tout ce qu'il faut ou il faut :-).

J'ai du une erreur dans la syntaxe qqe part ou une érreur d'écriture mais je ne vois pas ou.

Dans le cas qui m'interesse, ça ne marche pas.
Et quand je fais un essai sur une portion de code ça marche.

comprend pas :-o

Publié : ven. 17/déc./2004 14:22
par Chris
J'ai pas compris ton problème, là.

Par contre, ton image et ton bouton s'affichent au même endroit sur la fenêtre.

Code : Tout sélectionner

If OpenWindow(1, 100, 200, 210, 314,#PB_Window_SystemMenu, "Window 1") And CreateGadgetList(WindowID(1)) 
  
  UseJPEGImageDecoder() 
  If LoadImage(70, "D:\PureBasic\Compilers\Open.bmp") 
    ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70)) 
    ImageGadget(7, 1,1,50,50,UseImage(70)) 
  EndIf 
  
  
  ; Delay (8000) 
  ; CloseWindow(1) 
  Repeat
  Until WaitWindowEvent() = #PB_EventCloseWindow
EndIf 

Publié : ven. 17/déc./2004 14:47
par Chris
D'abord, on n'utilise pas un Delay() pour temporiser ce genre de boucle.
Le delay te stoppe l'execution du programme, et donc, le rafraichissement de la fenêtre.

Code : Tout sélectionner

If OpenWindow(1, 100, 200, 210, 314,#PB_Window_SystemMenu, "Window 1") And CreateGadgetList(WindowID(1)) 
  
  UseJPEGImageDecoder() 
  If LoadImage(70, "D:\PureBasic\Compilers\Open.jpg") 
    
    ImageGadget(7, 1,1,50,50,UseImage(70))
    ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70)) 
    
    Start = ElapsedMilliseconds()
  EndIf 
  
  ; Delay (8000) 
  ; CloseWindow(1)
  
  ; Solution 1
  ; Repeat
  ; Until ElapsedMilliseconds()- Start >= 8000 Or WindowEvent() = #PB_EventCloseWindow
  
  ;Solution 2
  Repeat
    If ElapsedMilliseconds()- Start >= 8000
      CloseWindow(1)
    EndIf
  Until WindowEvent() = #PB_EventCloseWindow
  
  End
EndIf 

buttonimagegadget et delay

Publié : ven. 17/déc./2004 15:04
par Patix
En fait je veux faire apparaitre une fenêtre avec image et bordure sans la barre de fenêtre. Et ensuite la fenêtre se ferme toute seule.

Donc je pensais créer une fenêtre sans bordure. Lui mettre par dessus un
bouton image. Et ensuite faire disparaitre la fenêtre grace à delay().

Je viens de m'apercevoir que la fonction delay() prend le pas sur l'apparition du bouton.

Quelle méthode serait à utiliser pour qu'une fenêtre apparaisse ss barre avec image et qu'elle se ferme seule.

Style ce que l'on voit quand on lance certain prog.

suis je plus clair ? :-)

Publié : ven. 17/déc./2004 15:11
par Chris

Code : Tout sélectionner

If OpenWindow(1, 100, 200, 210, 314,#PB_Window_BorderLess|#WS_BORDER , "Window 1") And CreateGadgetList(WindowID(1)) 
  
  UseJPEGImageDecoder() 
  If LoadImage(70, "D:\PureBasic\Compilers\Open.jpg") 
    ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70)) 
    ImageGadget(7, 1,1,50,50,UseImage(70))
    Start = ElapsedMilliseconds()
  EndIf 
  
  Repeat
    If WindowEvent() = 0 : Delay(20) : EndIf
    
  Until ElapsedMilliseconds() -Start >= 8000
  CloseWindow(1)
  
  End
EndIf 
Sinon, tu peux utiliser #WS_DLGFRAME à la place de #WS_BORDER

Publié : ven. 17/déc./2004 16:08
par Patix
Merci pour tes réponses rapides.

Maintenant je suis bloqué, je pense par l'utilisation de la version démo qui n'accepte pas la variable #WS_BORDER.

Donc comme j'ai commandé Purebasic, je vais attendre son arrivée. :-)

Publié : ven. 17/déc./2004 16:13
par Chris
Ah oui, si tu as la version de démo de Pure, pas de constantes ou de fonctions provenant de l'Api.

Mais tu ne perdras rien à l'acheter, il est vraiment super ce langage :)

En attendant, tu peux toujours retirer le #WS_BORDER.

Sinon, tu peux faire une fenêtre sans bordure, et ajouter un ContainerGadget() qui couvre toute la surface, avec l'option #PB_Container_Raised.

Code : Tout sélectionner

If OpenWindow(1, 100, 200, 210, 314,#PB_Window_BorderLess , "Window 1") And CreateGadgetList(WindowID(1)) 
  
  UseJPEGImageDecoder() 
  If LoadImage(70, "D:\PureBasic\Compilers\Open.jpg")
    ContainerGadget(100, 0, 0, 210, 314, #PB_Container_Raised)
    
    ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70)) 
    ImageGadget(7, 1,1,50,50,UseImage(70))
    CloseGadgetList()
    
    Start = ElapsedMilliseconds() 
  EndIf 
  
  Repeat 
    If WindowEvent() = 0 : Delay(20) : EndIf 
    
  Until ElapsedMilliseconds() -Start >= 8000 
  CloseWindow(1) 
  
  End 
EndIf 

Publié : ven. 17/déc./2004 16:27
par Patix
Merci, c'est mieux pour moi. :-)