Page 1 sur 1

[..] Bouton qui ne marche pas

Posté : sam. 11 juil. 2009 14:23
par ethneldryt
Bonjour,voila je n'arrive pas a faire fonctionner le premier bouton, je ne comprend pas pourquoi.

Code : Tout sélectionner

#Include <GuiStatusBar.au3>

Local $aParts[2] = [200, 160]
$guiname="toto"
$gui=GUICreate($guiname,500,500)
$st=_GUICtrlStatusBar_Create($gui)
_GUICtrlStatusBar_SetParts ($st, $aParts)
$bt=GUICtrlCreateButton("test",0,0,100)
$bt2=GUICtrlCreateButton("test",0,0,100)

_GUICtrlStatusBar_EmbedControl($st,0,GUICtrlGetHandle($bt),2)
_GUICtrlStatusBar_EmbedControl($st,1,GUICtrlGetHandle($bt2),2)
GUISetState()

while 1
    $msg = GUIGetMsg()
    Select
        case $msg = -3
            exit
        case $msg = $bt
        msgbox(0,"","")
    EndSelect
WEnd
 

Re: [..] Bouton qui ne marche pas

Posté : dim. 12 juil. 2009 04:21
par SagePourpre
Comme ça, ça fonctionne... Le problème est donc en rapport avec la barre de statut ...



Mais dans la description de la fonction, il est bien spécifié que n'importe quel contrôle peut y être placé...
Je ne comprends donc pas pourquoi le bouton ne réagit pas...


Peut-être une limitation de la barre de statut ? ... Je suis intrigué.
Je reviens là-dessus si je trouve comment faire interagir les boutons de la barre de statut.



Code : Tout sélectionner

#Include <GuiStatusBar.au3>

Local $aParts[2] = [200, 160]
$guiname="toto"
$gui=GUICreate($guiname,500,500)
;$st=_GUICtrlStatusBar_Create($gui)
;_GUICtrlStatusBar_SetParts ($st, $aParts)
$bt=GUICtrlCreateButton("test",0,0,100)
$bt2=GUICtrlCreateButton("test",0,0,100)

;_GUICtrlStatusBar_EmbedControl($st,0,GUICtrlGetHandle($bt),2)
;_GUICtrlStatusBar_EmbedControl($st,1,GUICtrlGetHandle($bt2),2)
GUISetState()

while 1
    $msg = GUIGetMsg()
    Select
        case $msg = -3
            exit
        case $msg = $bt
        msgbox(0,"","")
    EndSelect
WEnd

Re: [..] Bouton qui ne marche pas

Posté : dim. 12 juil. 2009 18:12
par orax
En créant une sous-classe de la barre (si c'est bien comme ça que ça s'appelle...), les messages de celle-ci, ainsi que le clic sur le bouton, sont visiblement bien interceptés, mais le problème est que je ne sais absolument pas si c'est la bonne manière de faire.
D'après ce que j'ai vu, c'est la fonction "SetParent" dans __GUICtrlStatusBar_EmbedControl qui pose problème, et sur MSDN à http://msdn.microsoft.com/en-us/library ... S.85).aspx ils racontent dans les remarques, si j'ai bien compris, qu'il faut synchroniser le "UISTATE" des deux fenêtres en envoyant les messages WM_CHANGEUISTATE et WM_UPDATEUISTATE. Je ne sais donc pas s'il faut procéder de cette manière ou comme je l'ai fait avec le début de code ci-dessous.
► Afficher le texte

Re: [..] Bouton qui ne marche pas

Posté : ven. 17 juil. 2009 03:55
par Tlem
Vous pourriez vous simplifier la vie en faisant quelque chose dans le genre :
► Afficher le texte
J'ai mis les barres n'importe comment pour l'exemple, mais bien sur il faudra colaer celle qu'il vous plaît en bas. ;)
Certes c'est très moyen, mais en attendent ...
Perso, j'aurais plutôt vu une barre d'outil, mais je n'ai pas trouvé comment la caler en bas.
Vous pourriez aussi utiliser une seconde GUI sans barre de titre qui contiendrait la fameuse ToolBar ou le menu.

Re: [..] Bouton qui ne marche pas  

Posté : ven. 17 juil. 2009 11:25
par ani
l'exemple fournis au premier post çà ne fonctionne pas au click mais juste en appuyant sur la touche enter du clavier :o
Pour activer le souriso

regarde les divers exemple fournis pour la toolbar, tu devrai voir wm_command.
la structure est identique ;)