[R] Gui dans timer

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
mickeich
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mar. 16 déc. 2008 17:25
Status : Hors ligne

[R] Gui dans timer

#1

Message par mickeich »

Bonjour,

Je suis en train de faire un script pour générer des action à intervalles régulières.
Une des actions est d'ouvrir une fenêtre.

Lorsque je crée une Gui avec GuiCreate dans le timer, la fenêtre apparait bien, mais tout se bloque ensuite.
La seule solution pour débloquer que j'ai trouvé est de mettre une MsgBox.
Je ne parle pas de gérer les différents événements pour chaques Gui créés et gérés en parallèles.

Code : Tout sélectionner

$NbTimer variable global qui s'incrémente pour chaque appel de _GuiFille() 

;===============================================================================
;   Fontion qui crèe une GUI
;===============================================================================
Func _GUIFille ()
    Local $COMID, $msg2=0, $NumTimer
    
    $NumTimer = $NbTimer
    
    ;Creation de la GUI
    $COMID = GuiCreate("Choix Port COM " & $NumTimer , 250, 100)
    
    ;charge un Label
    GuiCtrlCreateLabel("Choix du port COM " & $NumTimer & " / " & $COMID, 10, 10)
    
    ;Affiche le Gui
    GUISetState(@SW_SHOW, $COMID)
    
    ;Marche ou se bloque s'il y a le MsgBox ou non
;~  msgbox (0,"GUID" & $NumTimer & " av", $COMID,1)

    
    ; GUI MESSAGE LOOP
    While $msg2 <> $GUI_EVENT_CLOSE
        $msg2 = _GUIGetMsg($COMID)  
    WEnd
    
    GUIDelete ($COMID)
    GuiSetState()
    
EndFunc
La fonction _GUIFille () est appelée par le timer pour créer plusieurs fenêtres.
Selon si je mets le msgbox, ça marche ou pas.
La fonction _GUIGetMsg ($COMID) me permet de récupérer les Msg qui correspondent à la Gui passée en paramètre.
J'aimerais bien déjà comprendre ce blocage avant de continuer.

Je sais pas si j'ai été assez clair.

question subsidiaire : la fonction sleep() arrête le script global ? Si je le met dans un timer, cela bloque uniquement le timer ou tout le script ?

Merci d'avance de votre aide.
Modifié en dernier par mickeich le jeu. 18 déc. 2008 17:23, modifié 3 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Gui dans timer

#2

Message par Tlem »

D'ou vient $NbTimer, $NumTimerCOm ?
Pourquoi à la ligne 15, vous utilisez $COMID qui est le handle de la GUI créé auparavent ?
Pourquoi faire un GuiSetState() après un GUIDelete() ?

Pour faire une GUI fille, vous devriez utiliser le flag parent de la commande GuiCreate.

Par rapport au code que vous donnez, je vous conseillerais plutôt la commande SplashTextOn() et vous évetera tout ceci.
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é".
mickeich
Niveau 1
Niveau 1
Messages : 5
Enregistré le : mar. 16 déc. 2008 17:25
Status : Hors ligne

Re: [..] Gui dans timer

#3

Message par mickeich »

Merci de ton aide,

J'ai réussi à m'en sortir en utilisant GUISetOnEvent et GUICtrlSetOnEvent.
Ce qui simplifie beaucoup les choses pour gérer les évènements.
Répondre