Page 1 sur 1

initialisation de EventGadget()

Publié : dim. 15/oct./2006 22:21
par Kwai chang caine
Bonjour à tous.

J'ai une question toute bete, mais dont je n'ai encore pas pu trouver la réponse.
J'en déduit que ce doit etre impossible.
Mais je demande quand meme, on sait jamais :)

Peut on remettre à zéro EventGadget() car d'apres ce que j'ai compris il garde en memoire le dernier gadget utilisé.
Ou bien sommes nous obligé de passer par une variable que l'on mettra elle à zéro, pour savoir si l'evenement viens juste d'etre réalisé et ne pas confondre avec un evenement déja mémorisé il y a un moment.

Merci de votre réponse
Bonne soirée.

Publié : dim. 15/oct./2006 23:16
par nico
Je ne comprend pas ce que tu dis, je ne vois pas comment on peut confondre un évènement avec un autre, chaque évènement est unique et on ne peut en traiter qu'un à la fois.

Initialiser EventGadget() n'as pas de sens pour moi, cela dit on doit pouvoir forcer sa valeur avec une API en envoyant un message bidon, mais c'est bizarre cette façon de faire, il vaut mieux passer par une variable.

Pourrais tu expliquer exactement ton problème de message avec un code?

Publié : lun. 16/oct./2006 8:57
par Kwai chang caine
Bonjour Nico

Venant du VB ou les evenements sont autogérés, je n'ai pas encore compris parfaitement les subtilités de la même gestion en PURE.

Par exemple le double-clic droit ou gauche sur un gadget, doit on recuperer l'evenement sur la fenetre et tester apres sur quel gadget on a cliqué, ou bien directement sur le gadget ou parfois je crois qu'il ne gere pas certains evenement.
Parfois les deux cas marche, parfois ça ne marche pas vraiment Ex: Survol du gadget, etc...

J'avais trouvé un squelette qui m'avait bien aidé, mais il n'y avait pas tous les evenements possibles, c'est vrai il y en a tellement.
Il faut dire pour la premiere fois depuis 1 an que je fais du pure, je regrette un peu VB pour cette seule raison. :?
Autrement tout le reste est trop top :10:

Il est pas facile de comprendre dans quel ordre on doit gérer les événements quand il y en a plusieurs en meme temps (Fenetre + gadget)
Y a t'il plusieurs soluces à chaque fois, selon l'humeur, ou bien il y a la meilleure méthode et les autres ralentissent la machine.

Je dois surement mal m'y prendre, mais tant que l'on a pas le déclic :

Code : Tout sélectionner

Procedure EvenementFenetreSimpleClicDroit()
 
 If EventGadget() = #BoutonCreer
  ; Code
  ; Code
  ; Code
  ; Code
  
  ; initialisation pour etre sur qu'au deuxieme clic droit si ce n'est pas sur un gadget
  ; il n'est pas encore la valeur en memoire d'un gadget que l'on a pas cliqué la deuxieme fois
 EndIf 

EndProcedure

Repeat   
 
 Select WaitWindowEvent()

  Case #WM_LBUTTONDOWN 
   GadgetSurvoler()
   EvenementFenetreSimpleClicGauche()
  Case #WM_LBUTTONDBLCLK 
   EvenementFenetreDoubleClicGauche()
  Case #WM_RBUTTONDOWN 
   EvenementFenetreSimpleClicDroit()
  Case #PB_Event_Gadget
   EvenementGadget() 
  Case #PB_Event_Menu
   EvenementMenu()
    
 EndSelect
 
ForEver 
Je te remercie beaucoup de ton interet 8)
Passe une bonne journée

Publié : lun. 16/oct./2006 11:35
par nico
D'accord, je vois!

Un évènement correspond à une action, donc il faut consulter la doc MSDN pour en retirer toutes les infos, car un évènement est associé à d'autres paramètres (lparam et wparam) qui permettent de traiter correctement cet évènement.

D'ailleurs pour le mouse over, j'ai justement voulu le codé ainsi comme si les évènements était natifs; je crois qu'on devrait pouvoir faire de même pour les autres évènements manquants.

Maintenant, certaines personnes essayent de faire des trucs tordus plus difficile à gérer comme le double click sur un bouton, mais si on s'en tient au raisonnable, c'est relativement aisé à faire.

Dis moi quel évènement manquant tu souhaites ajouter pour chaque gadget précisément, juste click droit et double click?

Publié : mar. 17/oct./2006 18:08
par Kwai chang caine
Bonjour NICO

Excuse moi d'avoir été aussi long dans la réponse.

Du coup n'ayant pas de réponse, j'ai créé un nouveau POST à ce sujet qui me parait à moi assez important.

http://purebasic.forum-gratuit.com/viewtopic.php?t=5784

Merci de ton attention.
Bonne soirée