Page 1 sur 1
[Résolu]Equivalent API de GetGadgetText()
Publié : jeu. 18/août/2005 14:41
par lionel_om
Bjr, Tout est dans le titre.
Je veux obtenir le texte d'un gadget en passant par une fct de l'PI (afin de ne pas bouger la pile).
Car je travaille dans un Thread et Dri m'a expliquer que si deux Thread utilise simultanément des Strings, ca bouge la pile est les données ne sont plus correctes.
Merci d'avance.
Publié : jeu. 18/août/2005 14:57
par Anonyme2
Utilise SendMessage_() avec #WM_GETTEXT
Publié : jeu. 18/août/2005 15:34
par Dr. Dri
j'ai pas vraiment parlé de la pile...
Dri

Publié : jeu. 18/août/2005 18:33
par lionel_om
@Denis, Merci
@Dri, oui, mais si ya des pb, c'est sans doute la pile qui est modifiée...
Publié : jeu. 18/août/2005 18:45
par Anonyme2
Le problème vient de l'utilisation du buffer texte interne de PB
Publié : ven. 19/août/2005 10:59
par lionel_om
J'ai une autre question :
comment on fait pour envoyer un signal de clic à un bouton ?
c'est tjrs avec SendMessage_(), j'imagine, mais je ne trouve pas la constante à passer...
Et si vous avez un lien où il y a toutes ces cstes et des exemples en plus, je vous embéterez peut être plus !!

merci bien
Publié : ven. 19/août/2005 11:34
par Backup
je viens de rajouter un exemple dans le Tuto sur la souris !
tout en bas du topic !!
comme d'hab cette exemple n'est pas de moi , il est d'Oliv je crois !!??!!
mais ton post m'a fait penser que j'avais oublié ça !!
http://purebasic.hmt-forum.com/viewtopic.php?t=1310
sinon c'est
Code : Tout sélectionner
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONDOWN,0,0)
Delay(300)
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONUP,0,0)
Publié : ven. 19/août/2005 12:30
par lionel_om
Merci pour ta réponse DoBro, mais ca ne marche que partiellement :
Ca ne marche plus quand on rajoute la nature de l'événement : SimpleClic/DblClic...
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Btn_Quit
EndEnumeration
If OpenWindow(#Window_0, 300, 300, 300, 200, #PB_Window_SystemMenu, "Fenêtre 1",0)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Btn_Quit, 100, 170, 100, 25, "Quitter")
EndIf
SetTimer_(WindowID(),1,3000,0)
Repeat
Select WaitWindowEvent()
Case #WM_TIMER
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONDOWN,0,0)
Delay(300)
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONUP,0,0)
Case #PB_EventGadget
If EventType() = #PB_EventType_LeftClick
Select EventGadgetID()
;Case
;Case
Case #Btn_Quit : quit = 1
EndSelect
;Case
;Case
EndIf
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
EndIf
Publié : ven. 19/août/2005 12:51
par Backup
pourquoi rajouter ça ?
puisque "#WM_LBUTTONDOWN, "
veut deja dire qu'il sagit du bouton gauche !!
pour le bouton droit c'est
#WM_RBUTTONDOWN
il me semble !

Publié : ven. 19/août/2005 13:42
par lionel_om
Oui, mais je veux mettre ça dans un code où je gère aussi le doubleclic gauche.
Or là ya plus la différence...
Mais c'est bon j'ai trouvé !
Merci bien
Publié : ven. 19/août/2005 17:03
par KarLKoX
Code : Tout sélectionner
Procedure Click(hWnd)
PostMessage_(hWnd, #WM_LBUTTONDOWN,0,0)
PostMessage_(hWnd, #WM_LBUTTONUP,0,0)
EndProcedure
Procedure DoubleClick(hWnd)
SendMessage_(hWnd, #WM_LBUTTONDBLCLK, 0, 0)
EndProcedure