Gadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
bugrane
Messages : 24
Inscription : dim. 02/mai/2004 18:28
Localisation : Bruxelles

Gadget

Message par bugrane »

Bonjour,

Qui pourrait me dire ou trouver un tuto simple sur l'utilisation des gadgets, j'ai bien été voir le tuto sur les gadgets présenté sur ce forum mais pour un grand débutant comme moi ce n'est pas très facile à comprendre. Je crois avoir assez bien bien assimilé la syntaxe du Basic de base et ne me débrouille pas trop mal avec GWbasic et powerbasic sous DOS, mais programmer une interface graphique ce n'est pas aussi simple.
Ma demande est donc toute simple, y a t'il un livre, un tuto ou site qui explique pas à pas (gendre PureBasic pour les nuls) la programmation d'une interface graphique avec PureBasic.


Merci

Kike :cry:

PS l'aide de PureBasic ne m'a pas été d'un grand secours.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

as-tu regardé les exemples fournis dans l'aide dans la section gadget ?
par exemple celui ci , que j'ai traduit tant bien que mal en français :)

Code : Tout sélectionner

  ; Il faut commencer en définissant une fenêtre  
  If OpenWindow(0,0,0,250,105,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Create gadgets...") 
    ; Ensuite création d'un gadget-list... 
    If CreateGadgetList(WindowID(0))   ; le gadget-list est créé 
      ; maintenant on peut ajouter des gadgets ici
      ButtonGadget(0,10,15,230,30,"Test bouton") 
    Else                               ; le gadget-list ne peut pas être créé 
      ; ici on peut ajouter un message d'erreur , mettre fin au programme , etc ...
    EndIf 
    
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
  EndIf 
ou celui-ci ?

Code : Tout sélectionner

  If OpenWindow(0,0,0,270,140,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ActivateGadget") And CreateGadgetList(WindowID(0)) 
    StringGadget  (0,10, 10,250,20,"bla bla...") 
    ComboBoxGadget(1,10, 40,250,100) 
    For a=1 To 5 : AddGadgetItem(1,-1,"ComboBox item "+Str(a)) : Next 
    SetGadgetState(1,2)                ; set (beginning with 0) the third item as active one 
    ButtonGadget  (2,10, 90,250,20,"Activate StringGadget") 
    ButtonGadget  (3,10,115,250,20,"Activate ComboBox") 
    Repeat 
      ev.l = WaitWindowEvent() 
      If ev.l = #PB_Event_Gadget 
        gad.l = EventGadgetID() 
        Select gad 
          Case 2 : ActivateGadget(0)   ; Activate StringGadget 
          Case 3 : ActivateGadget(1)   ; Activate ComboBoxGadget 
        EndSelect 
      EndIf 
    Until ev.l=#PB_Event_CloseWindow 
  EndIf 
tu devrais déjà essayer de modifier ces programmes pour mieux les comprendre, ensuite ajouter des gadgets pour tester , etc .

et revenir en expliquant sur quel point tu bloques , en recopiant ici les lignes de programme qui te posent problème.
bugrane
Messages : 24
Inscription : dim. 02/mai/2004 18:28
Localisation : Bruxelles

Message par bugrane »

Peut-être que je suis très bête mais cela ne m'aide pas beaucoup. J'ai essayé d'ajouter une partie du code du tuto dans le programme que j'ai commencé à développer avec comme résultat de faire disparaitre la fenêtre principale du programme.
Vraiment PureBasic m'a l'air d'être un formidable envirronement de dévellopement mais il lui manque vraiment une aide pour les tous grands débutants. On trouve assez facilement des cours sur le basic standard, sur la programmation structurée (par exemple sur www.developpez.com) mais rien sur les bases de la programmation des Gadgets en PureBasic. Ton tuto sur les Gadget est surement bien fait mais nécessite déjà des connaissances de base.
Merci pour les conseils, je vais passer le WE à essayer de comprendre.
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

bugrane a écrit :Peut-être que je suis très bête mais cela ne m'aide pas beaucoup. J'ai essayé d'ajouter une partie du code du tuto dans le programme que j'ai commencé à développer avec comme résultat de faire disparaitre la fenêtre principale du programme.
Vraiment PureBasic m'a l'air d'être un formidable envirronement de dévellopement mais il lui manque vraiment une aide pour les tous grands débutants. On trouve assez facilement des cours sur le basic standard, sur la programmation structurée (par exemple sur www.developpez.com) mais rien sur les bases de la programmation des Gadgets en PureBasic. Ton tuto sur les Gadget est surement bien fait mais nécessite déjà des connaissances de base.
Merci pour les conseils, je vais passer le WE à essayer de comprendre.
Le problème ne vient pas du manque de tutos sur les gadgets et purebasic : si tu sais comment fonctionne les WINAPI, tu sauras utiliser les fonctions dédiées aux gadgets avec PureBasic.
Il y a des cours sur developpez.com, programmationworld, etc ...
"Qui baise trop bouffe un poil." P. Desproges
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

pour les gadget c'est simple, je fais un exemple en vitesse pour un bouton super commenté et je le mets ici :wink:

et voila :

Code : Tout sélectionner

Enumeration ; on fait une liste de constantes qui permet de numéroter les fenêtres et les gadgets
  #Fenetre
  #Bouton
EndEnumeration

; on crée une fenêtre toute bête centré sur l'écran et avec un bouton quitter
If OpenWindow(#Fenetre, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Test")
  ; si la création de la fenêtre échoue, OpenWindow renvoie 0 donc la condition n'est pas vrai, si la fen est crée, la condition est ok
  ; #Fenetre est une constante, elle permet de donner un numéro à la fenêtre, ainsi, on eput faire la différence entre toutes les fen créée
  
  ; on crée une liste qui va permettre de mettre des gadget sur la fenêtre
  If CreateGadgetList(WindowID())
    
    ButtonGadget(#Bouton, 5, 5, 100, 100, "Bouton")
    ; #Bouton est le numéro du gadget pour permettre de savoir sur quel gadget on a agit
    
  EndIf
  
  ; dans cette boucle repeat until, on va gérer les évènements
  Repeat
    
    Event = WaitWindowEvent()
    ; on stocke dans Event un numéro qui représente une action précise que l'on a fait sur la fenêtre
    ; par exemple, on a appuyé sur un bouton, on a déplacé la fenêtre, etc....
    
    ; il faut donc déterminer l'évènement qui s'est produit sur la fenêtre à l'aide d'un test
    
    ; on test si l'évnement à un rapport avec un gadget
    If Event = #PB_Event_Gadget
      ; si l'évènement est égale à #PB_Event_Gadget, on a fait une action sur un gadget, mais on ne sait pas encore quoi ni sur quel gadget
      ; on va donc faire un nouveau test pour trouver le gadget sur lequel on a fait une action
      
      ; on teste si on a appuyé sur le bouton
      ; pour cela, on regarde sur quel numero de gadget s'est produit l'évènement
      If EventGadgetID() = #Bouton
        ; c'est le bouton donc on a cliqué sur le bouton
        
        MessageRequester("Information", "Tu as appuyé sur le bouton", 0)
        
      EndIf
      
    EndIf
    
    ; pour quitter la boucle, on regarde toujours l'évènement qui s'est produit sur la fen
    ; si c'est l'appui sur le X en haut à droite, on a l'évènement égale à la constante #PB_Event_CloseWindow qui signifie qu'on a appuyé pour quitter le programme
  Until Event = #PB_Event_CloseWindow
 
  MessageRequester("Information", "Tu veux quitter le programme", 0)
  
EndIf
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)]
bugrane
Messages : 24
Inscription : dim. 02/mai/2004 18:28
Localisation : Bruxelles

Message par bugrane »

Merci pour ta dernière réponse, j'y vois déjà un peu plus clair.
Je me pose encore deux questions.
1) J'ai intégré ton code à une petite application que je développe pour me faire la main, tout marche comme prévu si ce n'est que lorsque j'ouvre une deuxième fenêtre(celle de ton exemple) la première fenêtre que j'avais ouverte disparaît, pourquoi?
2) Lorsque ll fenêtre ouverte par le ton code reste ouverte sur mon écran même lorsque le programme se termine.


Henri
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Donne ton code, je voit pas comme ça :)
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)]
Répondre