Page 1 sur 1

postmessage_( et clique sur un boutton

Publié : dim. 02/avr./2006 8:53
par olivier
Bien le bonjour à tous :D

Voilà, pour ne pas à avoir à répéter certaine action (comme la procedure pour quitter), j'aimerais faire en sorte que postmessage_( simule un clique sur un boutton.

Mais mes paramêtres n'ont pas l'air bon.... un petit coup de pouce SVP :?

Code : Tout sélectionner

OpenWindow (0,10,10,200,200, "ess", #PB_Window_SystemMenu  )
CreateGadgetList ( WindowID (0))
ButtonGadget(1,10,10,100,20,"Quitter")


Repeat
     event= WaitWindowEvent ()
     Select event
          Case #PB_Event_Gadget ; *****************Choix d'un bouton
               Select EventGadget()
                    Case 1
                         quit=1
                    Case 2
                         
               EndSelect
          Case #WM_CLOSE 
               PostMessage_(WindowID(0),#PB_Event_Gadget,1,1)
               
     EndSelect
Until quit=1

Publié : dim. 02/avr./2006 10:58
par KarLKoX

Code : Tout sélectionner

#BUTTON_ID = 1

Procedure ClickMe(hWnd.l)
  SendMessage_(hWnd, #WM_LBUTTONDOWN, 0, 0)
  SendMessage_(hWnd, #WM_LBUTTONUP, 0, 0)
EndProcedure

OpenWindow (0,10,10,200,200, "ess", #PB_Window_SystemMenu  )
CreateGadgetList ( WindowID (0))
ButtonGadget(#BUTTON_ID,10,10,100,20,"Quitter")

Repeat
     event= WaitWindowEvent ()
     Select event
          Case #PB_Event_Gadget ; *****************Choix d'un bouton
               Select EventGadget()
                    Case 1
                         quit=1
                    Case 2
                         
               EndSelect
          Case #WM_CLOSE
               ;PostMessage_(WindowID(0),#PB_Event_Gadget,1,1)
                ClickMe(GadgetID(#BUTTON_ID))
               
     EndSelect
Until quit=1

Publié : dim. 02/avr./2006 13:49
par olivier
Merci, Karlkox, t'es un Boss 8)

Je pensais que l'on pouvais faire cela en un seul SendMessage, mais apparement non...

a+ et bonne fin de week end

Publié : dim. 02/avr./2006 16:04
par nico
Avec un seul message, c'est possible, je vais regarder!

Publié : dim. 02/avr./2006 16:13
par nico

Code : Tout sélectionner

#BUTTON_ID = 1 
#BUTTON_ID2=2

OpenWindow (0,10,10,200,200, "ess", #PB_Window_SystemMenu  ) 
CreateGadgetList ( WindowID (0)) 
ButtonGadget(#BUTTON_ID,10,10,100,20,"Un") 
ButtonGadget(#BUTTON_ID2,10,80,100,20,"Deux")

Repeat
  Event= WaitWindowEvent () 
  Select Event 
    Case #PB_Event_Gadget 
      Select EventGadget() 
        Case 1 
          Debug "1"
          
        Case 2 
          ;/avec ce message, lors de l'appui du bouton "Deux", cela déclenche 
          ;/un évènement du bouton "Un" comme si on avait cliqué sur celui-ci.
          SendMessage_(WindowID(0),#WM_COMMAND,#BUTTON_ID,GadgetID(#BUTTON_ID))
          
      EndSelect 
    Case #WM_CLOSE 
      Quit=1

  EndSelect 
Until Quit=1 

Publié : lun. 03/avr./2006 7:10
par olivier
Je savais que le BOSS des BOSSSSS était parmis nous ! 8)

Merci Nico !

Le message est bizarre tout de même, devoir envoyer l'id du boutton sous 2 forme : #BUTTON_ID et GadgetID(#BUTTON_ID) ... :?

Je viens de regarder, le premier n'est pas nécessaire :
SendMessage_(WindowID(0),#WM_COMMAND,13849451,GadgetID(#BUTTON_ID))

Marche tres bien aussi.

Merci bien et bonne semaine à tous les travailleurs

Et vive le CPE.......non je déconne :wink:

Publié : lun. 03/avr./2006 11:47
par nico
Non, ce n'est pas bizarre, c'est comme ça que la fenêtre reçoit normalement le message encore que j'ai simplifié en omettant la notification pour wparam qui doit être:notification<<16|id du gadget.

la notification peut être #WM_RBUTTONUP pour un click droit.


l'id du gadget n'est pas forcément unique alors que le handle oui, c'est pour cela que l'id est toujours reçu avec le handle en général.