Page 1 sur 1

[R] Sleep qui empeche fermeture Gui

Posté : mar. 27 juil. 2010 21:33
par networe
Comme mon ancient message supprimé ..

Avec un Sleep(1000) mon gui est innaccessible (Les bouttons sont gelés)

Vous m'avez dit un Sleep(50) arrange le problème, mais il gêne toujours le CPU et les clics se font avec un petit 'lag' quand même gênant.

Possible d'arranger cela ?

Re: [..]Sleep qui empeche fermeture Gui

Posté : mar. 27 juil. 2010 21:38
par sylvanie
il faut peut être alors passer en mode evenmentiel avec Opt("GUIOnEventMode", 1) et assigner une fonction par contrôle
(voir fichier d'aide sur GUIOnEventMode)

Re: [..] Sleep qui empeche fermeture Gui

Posté : mar. 27 juil. 2010 21:54
par networe
Je comprend vraiment pas cette fonction :x

Re: [..] Sleep qui empeche fermeture Gui

Posté : mar. 27 juil. 2010 22:16
par networe
J'essais AdlibEnable

J'ai mon script ..

Code : Tout sélectionner

While 1 
...
Caliss() ; Jappel la fonction Caliss
Wend
Et ça marche bien mais :

Code : Tout sélectionner

While 1 
...
AdlibEnable("Caliss",110)
Wend
Impossible de le faire marcher, Comment ca ??

Re: [..] Sleep qui empeche fermeture Gui

Posté : mar. 27 juil. 2010 22:27
par sylvanie
[edit par croisement de posts]
AdlibEnable ne doit pas être prise dans un while, puisque son but est de lancer cycliquement une fonction sans avoir à passer par une boucle
[ fin edit]

ok, pour le mode evenementiel , voici un copier coller du code d fichier d'aide pour analyse :
► Afficher le texte
la philosophie est de remplacer le gros while 1 ... wend contenant l'ensemble des tests : si controle pressé est bouton1 alors faire ça, si bouton 2 faire ça, etc . par un

Code : Tout sélectionner

while 1
  sleep(1000)
wend
 
mais en contre partie, il faut enregistrer des callback (fonction) à chaque controle de la fenêtre pour que le script sache quoi exécuter lors de l'appui dessus

pour enregistrer ces fonction nous avons 2 "enregistreurs" :
GUISetOnEvent pour les boutons (maintenant on va plutôt parler d'évènement) de la fenêtre principal (croix de fermetre, agrnadissement, réduction ....)
et
GUICtrlSetOnEvent qui va gérer les contrôle de notre programme à proprement parlé (nos boutons, combobox, listview, etc)

ainsi dans l'exple de l'aide :
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") indique qu'à la croix ($GUI_EVENT_CLOSE , là faut lire l'aide pour les correspondence) on associe la fonction CLOSEClicked écrite plus bas dans le code

de même après on a :
GUICtrlSetOnEvent($okbutton, "OKButton")
qui associe au bouton créé une ligne plus haut "$okbutton" la fonction OKBOUTON écrite de même dans le code.

donc dans votre code, il faudrait associer à chacun de vos contrôle, la fonction lancée lorsque vous cliquez dessus

Re: [..] Sleep qui empeche fermeture Gui

Posté : mar. 27 juil. 2010 23:51
par networe
Donc sortir AdlibEnable du while 1 est fait :

Code : Tout sélectionner

While 1
..
LancerAdlibEnable()
Wend

Func LancerAdlibEnable()
        AdlibEnable("MaFonctionPrimaire",110)
EndFunc

Func MaFonctionPrimaire()
    ....
EndFunc
Mais ma fonctionPrimaire n'est encore pas exécuté..Saufe quand je l'appel directement au début dans le while

Code : Tout sélectionner

While 1
..
MaFonctionPrimaire()
Wend
...C'est compliquer...!:)

Re: [..] Sleep qui empeche fermeture Gui

Posté : mer. 28 juil. 2010 08:12
par Tlem
@networe
Après 40 messages sur le forum, vous ne savez toujours pas utiliser les balises de code !!! :evil:

Merci de faire le nécessaire en corrigeant vos messages ci-dessus.
Pour mémoire : http://www.autoitscript.fr/forum/viewto ... 896#p24896

Re: [..] Sleep qui empeche fermeture Gui

Posté : mer. 28 juil. 2010 13:56
par networe
Je suis comme ça :')

C'est édité, et un Up pour ma question :(?

Re: [..] Sleep qui empeche fermeture Gui

Posté : mer. 28 juil. 2010 20:51
par sylvanie
là je pressent 2 problèmes de fonts qui ici ont fâcheusement tendence à se confondre :
- la gestion de la fenêtre d'après le 1er message, qui peut être améliorée (légèrement) par le passage en mode évènementiel
-une fonction appelée cycliquement via un adlibenable (qui est toujours inclus dans le while 1 au passage, puisque vous avez juste délocalisé l'appel via une fonction qui est dans la boucle ...)

pour éliminer les pistes de lag, vous allez :
- tester la réactivité en supprimant l'appel à la fonction lancée par le adlibenable. Si les troubles persistent alors il faut se lancer dans le mode évènementiel corps et ame.
-Sinon : il s'agit de la fonction lancée cycliquement. A ce moment, il faudra chercher à l'optimiser (essayer d'éviter les imbrications de boucles par exple) et au cas échéant compiler ce code à part pour le lancer via la commande "run" depuis votre script principal

Re: [..] Sleep qui empeche fermeture Gui

Posté : jeu. 29 juil. 2010 13:34
par networe
Voila le problème est résolu avec adlibenable :)

Re: [R] Sleep qui empeche fermeture Gui

Posté : jeu. 29 juil. 2010 19:54
par sylvanie
et bien tant mieux