[R] Test click sur GUI

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Test click sur GUI

#21

Message par mikell »

pour le clignotement en général on utilise TimerInit() et TimerDiff()

avec (peut-être...) _SetBitMap() en donnant comme opacité 0 et 255 alternativement ?
mais ça risque de faire un script lourd...

Remarque 1 : avec des bmp au lieu des png il suffirait d'un $GUI_HIDE - $GUI_SHOW :P

Remarque 2 : avec _SetImage() au lieu de _SetBitMap() on peut faire un GuiCtrlCreatePic() avec un png, et l'image a un handle donc $GUI_HIDE - $GUI_SHOW fonctionne... autre avantage, on crée des controles pour chaque image, pas des GUI :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#22

Message par pierrotm777 »

Il est moqueur ce mikell, bon rendons à César ce qui est à César effectivement, timerinit() est la solution , même avec des .png :P .

Voici un petit code de Tlem pour un autre de mes scripts juste adapté à la situation :
► Afficher le texte
Il fonctionne super bien mais durant le clignotement , il me bloque un peut tout, il prend trop de temps cpu, enfin je suppose, de plus cela me bloque la fonction de click sur les logo lorsque le logo est caché, normal !
J'ai aussi essayé d'utiliser l'UDF _Adlib.au3 pour gérer au mieux tout cela mais avec le même problème.

Il faut que je me débarrasse de la fonction Mysplsah, comme me l'a conseillé Tlem mais pour l'instant les logo se placent au même endroit.

J'y ai un peu réfléchi et je pense que mon erreur est dans l'ordre d'appel de mes lignes

Pour l'instant, je remplace :

Code : Tout sélectionner

MySplash($Logo,@ScriptDir&"\"&$Logo, $Speed, $IndBlink, $Var[2] ,$Var[3], $Var[4] ,$Var[5],$GUI&$Ln)
par:

Code : Tout sélectionner

        $GUI = GUICreate($Logo, $Var[2] ,$Var[3], $Var[4] ,$Var[5], $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGUI2)
        $hImage = _ImageResize(@ScriptDir&"\"&$Logo, $Var[4] ,$Var[5])
        $bitmapID = _SetBitMap($GUI, $hImage, 255, $Var[4] ,$Var[5])
        GUISetState()
        WinSetOnTop($GUI, "", 1)
alors que je devrais la remplacer par:

Code : Tout sélectionner

        $hImage2 = _ImageResize(@ScriptDir&"\"&$Logo, $Var[4] ,$Var[5])
        $bitmapID = _SetBitMap($GUI, $hImage, 255, $Var[4] ,$Var[5])
        $GUI = GUICreate($Logo, $Var[2] ,$Var[3], $Var[4] ,$Var[5], $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGUI2)
        GUISetState()
        WinSetOnTop($GUI, "", 1)
Je dois donc tester cela et je pense qu'il me sera alors plus facile de gérer ces Gui
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#23

Message par pierrotm777 »

mikell a écrit :Remarque 2 : avec _SetImage() au lieu de _SetBitMap() on peut faire un GuiCtrlCreatePic() avec un png, et l'image a un handle donc $GUI_HIDE - $GUI_SHOW fonctionne... autre avantage, on crée des controles pour chaque image, pas des GUI :wink:
On puis-je trouver cette fonction _SetImage() ?

Oui je pense aussi que mon problème est bien de créer des Gui . Il faudrait que je teste une solution plus pratique pour la création des logos !
Mais il faudrait que je puisse cliquer dessus même si le logo est caché !!!
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Test click sur GUI

#24

Message par mikell »

La fonction _SetImage() est comprise dans l'UDF Icons.au3
Le fichier zip ci-joint devrait répondre à beaucoup de tes questions (il vient du forum US mais j'ai oublié l'adresse...)
pierrotm777 a écrit :Mais il faudrait que je puisse cliquer dessus même si le logo est caché !!!
Pour ça y a des tas de solutions (superposer l'image à une label et jouer avec GUI_ONTOP, définir une zone de clic et jouer avec _IsPressed() ou un 'mouse event' ,etc)
pierrotm777 a écrit : Il faudrait que je teste une solution plus pratique pour la création des logos !
Haha, ça y est tu y viens finalement...
Comme quoi Tlem avait raison :P
Icons_Hover.zip
(1006.35 Kio) Téléchargé 49 fois
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Test click sur GUI

#25

Message par mikell »

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#26

Message par pierrotm777 »

Je n'ai aucune honte à dire que l'aide de Tlem est toujours juste et la bienvenue !
J'ai juste besoin d'un peu de temps pour assimiler certaines solutions ou méthodes :mrgreen:
Je connaissais déjà ce lien, je vais regarder à nouveau !
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#27

Message par pierrotm777 »

Bon j'ai travaillé sur la création des logos (plus de fonction 'Mysplash') et sur le clignotement .

Je pense que c'est un peu mieux pour la création des logos mais je n'ai pas mon clignotement ! :(
De plus, mon premier logo (qui seul doit clignoter puisque il y a un :b derrière le logo) est soit caché soit visible à chaque démarrage :(

Où est mon bug svp ?
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Test click sur GUI

#28

Message par mikell »

je n'ai pas essayé ni regardé en profondeur mais a priori je dirais que le code pour le clignotement n'est pas placé au bon endroit
une fois que le script a défini les logos il sort de la boucle for-next, donc je dirais qu'il faut placer le code dans le while
d'autre part,
"TimerDiff() : Returns the time difference (in milliseconds) from a previous call to TimerInit()."
or je ne vois pas de TimerInit() avant l'appel à TimerDiff() dans ton script
décidément Tlem te connait bien :) respect Tlem :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#29

Message par Tlem »

C'est pas sympa de se moquer. pierrotm777 fait ce qu'il peut avec les connaissance qu'il a.
Il lui manque juste pas grand chose pour acquérir une certaine logique et méthode de construction de ses scripts.
Pour l'instant, il trouve suffisamment d'aide pour répondre à ses questions, mais il n'arrive pas encore à appréhender les erreurs de base car la recherche est sans doute complexe et qu'il cherche aussi dans la complexité plutôt que dans la simplicité !!!

Malheureusement, il faudra bien qu'il découvre que lorsqu'on programme, on passe des heures et des heures à tester un code et que dans certains cas on se casse les dents, se qui oblige parfois à tout recommencer d'une autre manière.
De plus, la copie d'un code sans sa compréhension globale, ne peut emmener qu'à des futurs problèmes de conception et modification du script.

Hé oui, pierrotm777 est en apprentissage et comme pour beaucoup, lorsqu'on prend le train en marche, l'age, l'activité professionnel, la charge de travail familiale, etc ... ne facilite pas la compréhension d'un langage non apprit naturellement (et je sais de quoi je parle). Mais il s'accroche, et c'est tout à son honneur, même si parfois il est stressant de lire son code. :wink:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#30

Message par pierrotm777 »

Pour une Tlem, je suis en accord avec ce que vous dites ! :P
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#31

Message par Tlem »

pierrotm777 a écrit :Pour une Tlem, je suis en accord avec ce que vous dites ! :P
Il faut avoir la foi pierrotm777 ... (rapport au mot qu'il manque dans votre phrase). :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#32

Message par pierrotm777 »

Je vais finir par me taper le derrière par terre de rire .
Mes logos clignotes mais ce ne pas le bon qui clignote .
De plus , pour une même vitesse définie, les logos clignotes différemment !
► Afficher le texte
Modifié en dernier par pierrotm777 le mer. 01 juin 2011 18:29, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Test click sur GUI

#33

Message par mikell »

Mais je ne me moquais pas ! :shock: (enfin pas trop)
Ce que je crois c'est que tu veux aller trop vite, et régler trop de problèmes à la fois au lieu de le faire progressivement, pas à pas
Avant d'aborder un problème il faut que les précédents aient été solutionnés....
Tu as réussi à obtenir un clignotement... c'est bon ! la bonne démarche c'est de faire clignoter un seul logo exactement comme tu le souhaites, et quand tout est clair dans ton esprit (et dans ton script), que tu as parfaitement compris comment ça fonctionne et pourquoi ça fonctionne, que tu maitrises la situation, là tu passes au 2ème logo
Avoir bien compris comment résoudre un problème est d'une grande aide pour arriver à résoudre le problème suivant :wink:

et pour info j'ai 53 ans (hé oui), un boulot, 3 gamins et une femme qui me rationnent le pc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#34

Message par Tlem »

mikell a écrit :pour info j'ai ....
Oui, mais vous, vous avez une certaine technique qui suffit à vos besoins. :roll:


@pierrotm777
Pour moi, votre fonction MySplash(), ne va toujours pas.
N'oubliez pas que cette fonction est appelée en boucle sur le nombre d'élément que vous voulez afficher. Or $GUI qui représente 'le support' de ces éléments est re-créé à chaque fois ... Ce qui n'est pas logique.

On commence par créer le support, puis on l'habille des différents éléments qui devront le composer tout en récupérant leur CTRL ID.
Revoyez d'abord cette partie, elle devrait résoudre un certains nombre d'autres éléments posant problème. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Test click sur GUI

#35

Message par pierrotm777 »

Euh , désolé Tlem, j'ai laissé la fonction Mysplash, mais si vous regardez mieux j'avais juste oublié de l'effacer .

Elle a été remplacée par cela:

Code : Tout sélectionner

        $hImage = _ImageResize(@ScriptDir&"\"&$Logo, $Var[4] ,$Var[5])
        $LogoID[$Ln] = GUICreate($Logo, $Var[4] ,$Var[5], $Var[2] ,$Var[3], $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGUI2)
        $bitmapID = _SetBitMap($LogoID[$Ln], $hImage, 255, $Var[4] ,$Var[5])
        GUISetState(@SW_SHOW, $LogoID[$Ln])
        WinSetOnTop($LogoID[$Ln], "", 1)
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Test click sur GUI

#36

Message par pierrotm777 »

En fait , j'avais déjà trouvé mon erreur mais je n'avais pas corrigé le code donné et là ça va bien mieux en modifiant le code ainsi :

Code : Tout sélectionner

If(Mod(TimerDiff($Timer), 2*$VitesseClignotementON) < $VitesseClignotementON) Then
  GUISetState(@SW_SHOW, [color=#BF0000]$LogoID[$Ln][/color])
Else
  GUISetState(@SW_HIDE, [color=#BF0000]$LogoID[$Ln][/color])
EndIf
Je pense donc avoir résolu mais différents besoins, c'est fut long et laborieux ! :D

Si vous avez plus simple et plus léger je suis preneur :wink:

Merci pour votre aide qui m'est précieuse !
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Test click sur GUI

#37

Message par pierrotm777 »

Bon, pour en terminer avec le clignotement , je vous livre mon test final.
J'ai simulé l'état de départ des logos (gris ou colorés) par un tableau:

Code : Tout sélectionner

Dim $LogoState[4]=[3,1,0,1]
Les logos clignotent indépendamment l'un de l'autre à des vitesses différentes selon ce qui est lu dans le fichier liste.txt .

Merci encore de votre aide à tous
Fichiers joints
OverlayMenu.zip
(18.95 Kio) Téléchargé 46 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Test click sur GUI

#38

Message par Tlem »

J'ai jeté un coup d’œil très rapide sur la partie qui fait clignoter vos icônes et personnellement je trouve que vous avez un traitement bien trop lourd dans cette boucle While/Wend.

Personnellement, j'étudierais plutôt une solution à base de AdlibRegister afin d’alléger la boucle principale.
Une fonction qui 'scan' la liste de vos icônes afin de savoir si ca doit clignoter ou non.
Si ça doit clignoter, alors on crée un AdlibRegister d'une durée donnée par votre .ini. L'AdlibRegister lance une fonction X qui ce charge en fonction de certains paramètres globaux de faire clignoter tel ou tel icône.
Le code peut paraitre plus lourd (plus de ligne de code), mais globalement il soulagera votre boucle principale. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Test click sur GUI

#39

Message par mikell »

Félicitations, mais si dans la liste on met :
I,214,5,30,30,"ONLINE:b",1500,100,"Online_*.png"
le logo clignote plus vite....
à quoi sert le 1500 ?
apparemment c'est le 100 qui commande le clignotement, à rythme constant :shock:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Test click sur GUI

#40

Message par mikell »

BIGRE évidemment il a raison le chef Tlem :shock: AdlibRegister
Voilà un script de base où 2 labels clignotent de manière irrégulière
► Afficher le textetext
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre