Page 3 sur 3
Re: [R] Test click sur GUI
Posté : jeu. 02 juin 2011 00:23
par mikell
Décidément je suis fatigué...
Avec AdlibRegister il faut jouer avec la fréquence d'appel de la fonction (c'est bien ça chef ?)
Comme ça c'est plus léger et on n'a pas besoin de timer
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
$GUI = GUICreate("Test clignotant", 300, 100)
$Label1 = GUICtrlCreateLabel("", 100, 10, 30, 30)
GUICtrlSetBkColor(-1, 0xff0000)
$Label2 = GUICtrlCreateLabel("", 200, 10, 30, 30)
GUICtrlSetBkColor(-1, 0x0000ff)
GUISetState()
$n1 = 0
$n2 = 0
$frequence = 250
$coeff = 6 ; clignotement à 6 x 250
AdlibRegister("_Clignote1", $frequence)
AdlibRegister("_Clignote2", $frequence)
While 1
If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
WEnd
;===========================================
Func _Clignote1()
If $n1 = $coeff Then ; allumé 6 x 250 = 1500
GUICtrlSetState($Label1, $GUI_HIDE)
$n1 = 0
Else ; éteint 250
GUICtrlSetState($Label1, $GUI_SHOW)
EndIf
$n1 = $n1+1
EndFunc
Func _Clignote2()
If $n2 = $coeff Then ; éteint 6 x 250 = 1500
GUICtrlSetState($Label2, $GUI_SHOW)
$n2 = 0
Else ; allumé 250
GUICtrlSetState($Label2, $GUI_HIDE)
EndIf
$n2 = $n2+1
EndFunc
Re: [R] Test click sur GUI
Posté : jeu. 02 juin 2011 11:08
par pierrotm777
Normalement 1500,500 devrait me permettre d'avoir un logo visible 1500ms et invisible 500ms
J'avais effectivement déjà pensé à utiliser AdlibRegister ainsi que l'udf _Adlib.au3 pour optimiser la charge CPU lors de l'utilisation de la fonction de clignotement .
A votr avis, dois-je utiliser _Adlib.au3 ou rester simplement sur AdlibRegister ?
Je vais regarder cela aujourd'hui

Re: [R] Test click sur GUI
Posté : jeu. 02 juin 2011 12:16
par pierrotm777
Bon , j'ai essayé avec la fonction standard AdlibRegister est c'est impeccable !
Je ne peux pas cliquer sur un logo qui clignote mais bon , faut pas trop en demander.
Re: [R] Test click sur GUI
Posté : jeu. 02 juin 2011 13:15
par mikell
pierrotm777 a écrit :Je ne peux pas cliquer sur un logo qui clignote mais bon , faut pas trop en demander.
Mais si ! il suffit de lui superposer une label transparente aux mêmes dimensions, c'est elle qui gèrera le clic

Dans le script suivant cliquez sur les logos
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
$GUI = GUICreate("Test clignotant", 300, 100)
$Label1 = GUICtrlCreateLabel("", 100, 10, 30, 30)
GUICtrlSetBkColor(-1, 0xff0000)
$Label1bis = GUICtrlCreateLabel("", 100, 10, 30, 30)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GuiCtrlSetState(-1, $GUI_ONTOP)
$Label2 = GUICtrlCreateLabel("", 200, 10, 30, 30)
GUICtrlSetBkColor(-1, 0x0000ff)
$Label2bis = GUICtrlCreateLabel("", 200, 10, 30, 30)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GuiCtrlSetState(-1, $GUI_ONTOP)
$btn1 = GUICtrlCreateButton("1", 100, 50, 30, 20)
$btn2 = GUICtrlCreateButton("2", 200, 50, 30, 20)
GUISetState()
$frequence = 250
$n1 = 0
$n2 = 0
$coeff = 4
$rouge = true
$bleu = true
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $btn1, $Label1bis
$rouge = NOT $rouge
If $rouge = false Then
AdlibRegister("_Clignote1", $frequence)
Else
AdlibUnRegister("_Clignote1")
GUICtrlSetState($Label1, $GUI_SHOW)
EndIf
Case $btn2, $Label2bis
$bleu = NOT $bleu
Switch $bleu
Case false
AdlibRegister("_Clignote2", $frequence)
Case true
AdlibUnRegister("_Clignote2")
GUICtrlSetState($Label2, $GUI_SHOW)
EndSwitch
EndSwitch
WEnd
;===========================================
Func _Clignote1()
If $n1 = $coeff Then
GUICtrlSetState($Label1, $GUI_HIDE)
$n1 = 0
Else
GUICtrlSetState($Label1, $GUI_SHOW)
EndIf
$n1 = $n1+1
EndFunc
Func _Clignote2()
If $n2 = $coeff Then
GUICtrlSetState($Label2, $GUI_SHOW)
$n2 = 0
Else
GUICtrlSetState($Label2, $GUI_HIDE)
EndIf
$n2 = $n2+1
EndFunc
Re: [R] Test click sur GUI
Posté : jeu. 02 juin 2011 15:12
par pierrotm777
Je dois regarder si avec mon type de GUI cela focntionne

Re: [R] Test click sur GUI
Posté : jeu. 02 juin 2011 18:41
par Tlem
mikell a écrit :Avec AdlibRegister il faut jouer avec la fréquence d'appel de la fonction (c'est bien ça chef ?)
Gagné.
Bon en ce qui concerne la superposition d'un contrôle invisible, personnellement, je n'en vois pas l'utilité, car si le logo est invisible, il n'y à aucune raison d'aller cliquer dessus !

Re: [R] Test click sur GUI
Posté : jeu. 02 juin 2011 20:47
par mikell
Tlem a écrit :Bon en ce qui concerne la superposition d'un contrôle invisible, personnellement, je n'en vois pas l'utilité, car si le logo est invisible, il n'y à aucune raison d'aller cliquer dessus !

Boudu quel mauvais esprit...
En tout cas si on veut quand même cliquer dessus quand ça clignote faut bien viser !
Re: [R] Test click sur GUI
Posté : ven. 03 juin 2011 01:25
par Tlem
Hummm soit, alors dans ce cas, le problème pourrait être réglé en utilisant deux icônes. 1 normal et l'autre avec une apparence grisée (comme un contrôle non actif).

Re: [R] Test click sur GUI
Posté : ven. 03 juin 2011 10:06
par mikell
Tlem a écrit :Hummm soit, alors dans ce cas, le problème pourrait être réglé en utilisant deux icônes. 1 normal et l'autre avec une apparence grisée (comme un contrôle non actif).

Oooh oui, un png de plus à gérer, 2 controles pour la même action au même endroit, c'est vrai que c'est tellement plus simple et puis comme ça on ne superpose pas 2 controles

ce qui était une mauvaise idée
heureusement qu'on a un chef pour nous rappeler nos limites et nous montrer la voie....
Re: [R] Test click sur GUI
Posté : ven. 03 juin 2011 10:40
par Tlem
Je sens bien la note d'humour dans la réponse, mais regardez bien les besoins de pierrotm777, car d'après la gestion des icônes, ceux-ci ont leurs coordonnées dans le fichier .ini, ce qui emmène à penser qu'ils peuvent changer de place.
En ce qui concerne la gestion d'un png de plus, en réalité, ce n'est pas si compliqué, car pour pouvoir afficher un png, vous devez avoir créé au préalable un objet image et donc c'est cet objet que vous gérez et non le png directement. Donc le handle ou le CTRL ID reste le même pour l'objet.
Donc nous n'aurons pas "2 controles pour la même action au même endroit" mais un seul contrôle avec deux images possible (voir même trois ou quatre si il veut gérer le survol de la souris).

Re: [R] Test click sur GUI
Posté : ven. 03 juin 2011 11:40
par pierrotm777
Tlem a écrit :Donc nous n'aurons pas "2 controles pour la même action au même endroit" mais un seul contrôle avec deux images possible (voir même trois ou quatre si il veut gérer le survol de la souris).

Alors là ça me plairait drolement ça !
Pouriez vous me guider ?

Re: [R] Test click sur GUI
Posté : ven. 03 juin 2011 11:56
par mikell
Et toc !

au boulot chef (vous l'avez bien cherché...)
Re: [R] Test click sur GUI
Posté : ven. 03 juin 2011 11:59
par Tlem
Là, je part jusqu'à demain soir et je serais dans l'incapacité de gérer correctement des réponses technique.
Mais dans l'ensemble, créez un objet image (utilisez Koda pour tester) puis attribuez une image à votre guise avec
GuiCtrlSetImage.
Ce principe est bon pour des icônes et il faudra bien évidement adapter avec GDI+ mais la base est là.
Edit :
Dans un premier temps, testez avec des icônes puis adaptez au mode GDI+.
Re: [R] Test click sur GUI
Posté : ven. 03 juin 2011 12:04
par pierrotm777
Bien , merci bonne vacances, je vais tester cela

Re: [R] Test click sur GUI
Posté : ven. 03 juin 2011 12:35
par mikell
Tlem a écrit :créez un objet image ... attribuez une image à votre guise ... il faudra bien évidement adapter avec GDI+
Tiens ça me rappelle quelque chose...
http://www.autoitscript.com/forum/topic ... icons-au3/