[..] Fermeture de fenêtre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
banane
Niveau 4
Niveau 4
Messages : 55
Enregistré le : sam. 19 mai 2012 21:49
Status : Hors ligne

[..] Fermeture de fenêtre

#1

Message par banane »

Bonjour, et oui c'est encore moi! :roll:
J'ai un problème qui commence sérieusement à m'énerver, j'ai une GUI, lorsque je clique sur le bouton "mise en page" il include :

Code : Tout sélectionner

#include<"mise en page.au3">
Si je finalement je renonce à faire la mise en page, il faut que si je clique sur annuler ou la croix rouge de la fenêtre "mise en page", le problème c'est que si je ferme la fenêtre "mise en page", il ferme aussi la GUI principale! :evil:
Alors j'ai essayé

Code : Tout sélectionner

    WinClose("Mise en page", "")
                                GUISetState(@SW_HIDE, "Mise en page")
Il cache bien la fenêtre mais apprès le fenêtre je ne peux plus la ré-activé avec:

Code : Tout sélectionner

    
            GUISetState(@SW_SHOW, "Mise en page")
                GUISetState(@SW_RESTORE, "Mise en page")
 
Comment faire pour fermer une fenêtre (ou la cacher) sans que cela ferme ma GUI principale?
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#2

Message par blacksoul305 »

Bonjour,

pour éviter ce genre de désagrément, j'opterai pour un système de tray. Genre, quand on clique sur $GUI_EVENT_CLOSE, on cache la GUI (@SW_HIDE), et avec le tray tu mes une option pour ré-afficher la GUI et quitter le programme.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#3

Message par mikell »

Réponse : faut lire le fichier d'aide ^^

Code : Tout sélectionner

While 1
$msg = GuiGetMsg(1)
Switch $msg[0]
    Case $GUI_EVENT_CLOSE
       Switch $msg[1]
           Case $magui_1
                GuiDelete($magui_1)
           Case $magui_2
                GuiDelete($magui_2)
           Case $magui_principale
                Exit
       EndSwitch
EndSwitch
Wend
" 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#4

Message par blacksoul305 »

Ou bien opter pour une solution simple et efficace, soit dit autrement, celle de Mikell haha
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 13:13
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#5

Message par Uranium »

Code : Tout sélectionner

While 1
    GUIGetMsg(1) = $aMsg
    Switch $aMsg[1]
        Case $Form1 ; Gui FORM1
            Switch $aMsg[0] ; Switch dse elements de la GUI1
                Case $GUI_EVENT_CLOSE
                    Exit
            EndSwitch
        Case $Form2 ; On passe à la gui 2
            Switch $aMsg[0] ; Switch dse elements de la GUI2
                Case $GUI_EVENT_CLOSE
                    MsgBox(0, '', "Ne me ferme pas :'( ")
            EndSwitch
    EndSwitch
WEnd

 
Edit : Doublé :cry:
« En mathématiques, “évident” est le mot le plus dangereux. »
Avatar du membre
banane
Niveau 4
Niveau 4
Messages : 55
Enregistré le : sam. 19 mai 2012 21:49
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#6

Message par banane »

Je me permet aussi de poser une autre questions: à quoi sert ce bout de code

Code : Tout sélectionner

$nMsg = GUIGetMsg()
Switch $nMsg
 
quel est la valeur de $nMsg ?
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#7

Message par blacksoul305 »

Cette variable contient chaque évènement retournée par la GUI. En clair, sans cette variable on ne peut traiter une interface graphique, ou alors c'est juste un semblant car rien ne se passe. Elle retourne la valeur d'un élément de la GUI sélectionné en quelques sorte.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
Uranium
Niveau 5
Niveau 5
Messages : 143
Enregistré le : mer. 28 mars 2012 13:13
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#8

Message par Uranium »

$nMsg = GUIGetMsg()
Switch $nMsg
C'est GUIGetMsg(1) , pour recevoir l'arrays et traiter plusieurs GUIs.

Code : Tout sélectionner

$nMsg = GUIGetMsg(1)
Switch $nMsg
GuiGetMsg(1) reçoit les 'évènements' des différentes GUIs ( clics ) et retourne une array où
$aMsg[1] est la GUI qui a reçu l'interaction et $aMsg[0] l'objet (label , bouton , slider ,...)

Donc

Code : Tout sélectionner

While 1
    GUIGetMsg(1) = $aMsg ; On met GuiGetMsg(1) dans notre variable
    Switch $aMsg[1] ; On fait un switch sur les GUIs
        Case $Form1 ; Gui FORM1
            Switch $aMsg[0] ; Switch dse elements de la GUI1
                Case $GUI_EVENT_CLOSE ; La croix pour fermer
                    Exit
            EndSwitch ; Fin du switch des boutons de la GUI1
        Case $Form2 ; On passe à la gui 2
            Switch $aMsg[0] ; Switch dse elements de la GUI2
                Case $GUI_EVENT_CLOSE ; croix de la gui 2
                    MsgBox(0, '', "Ne me ferme pas :'( ") ; action
            EndSwitch ; fin switch des elements de la gui 2 
    EndSwitch ; fin du switch dse GUIs
WEnd
« En mathématiques, “évident” est le mot le plus dangereux. »
Avatar du membre
banane
Niveau 4
Niveau 4
Messages : 55
Enregistré le : sam. 19 mai 2012 21:49
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#9

Message par banane »

Merci mais une fois que j'appui sur le bouton "mise en page" il créer une 2 ème GUI (le code source de la 2eme gui est dans le script de la gui principale). Donc il m'affiche bien la fenêtre mise_en_page. Apres je quite la fenêtre mise_en_page et là ma Gui principale ne fonctionne plus. Elle n'intercepte plus ce que je fait. je ne peux même plus quitter ma 1ere GUI :shock:
Il faudrait que je fasse ça :

Code : Tout sélectionner

Case $Form_principale ; Gui FORM1
            Switch $aMsg[0] ; Switch dse elements de la GUI1
                Case $GUI_EVENT_CLOSE ; La croix pour fermer
                    Exit
 ; et la il faut que je re mette tout les bouton ?
case $ok
case $annuler
case $enregistrer
...
            EndSwitch ; Fin du switch des boutons de la GUI1
 
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Fermeture de fenêtre

#10

Message par mikell »

► Afficher le texte
" 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