[Func] Show... fonction pour cacher /montrer votre gui

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

[Func] Show... fonction pour cacher /montrer votre gui

#1

Message par SagePourpre »

Voilà une petite fonction sympa que j'utilise souvent quand je me crée
des gui. Elle permet de montrer/cacher votre gui à l'appui d'une touche.


Important : Au début de votre script, vous devez déclarer
la variable $status

Code : Tout sélectionner

Global $status=1

Ensuite, pour utiliser la fonction, vous n'avez qu'à utiliser Hotkeyset et lui assigner
la fonction. Voilà !



Code : Tout sélectionner

Func show()
    If WinActive($titre) Then
        GUISetState(@SW_HIDE, $gui)
        $STATUS -= 1
        GUICtrlSetData($search, "")
    ElseIf Not WinActive($titre) Then
        GUISetState(@SW_SHOW, $gui)
        $STATUS += 1
        
        
    EndIf
EndFunc   ;==>show


C'est une petite fonction que j'ai vu une fois dans un script sur le forum anglais
et depuis, je l'utilise pratiquement partout. (Je trouve utile de camoufler mes gui et de les
rappeler sur demande).
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] Show... fonction pour cacher /montrer votre gui

#2

Message par Tlem »

Pas besoin de fonction particulière pour cacher une GUI.
La simple ligne suivante suffit :

Code : Tout sélectionner

GUISetState(@SW_HIDE, $MainGUI)
Avec $MainGUI égal au Handle de la fenêtre principale.
Evidement on remplace la macro @SW_HIDE par @SW_SHOW pour afficher la GUI.

Avec GUISetState, il est possible d'utiliser ce type de macro :
  • Code : Tout sélectionner

    @SW_MINIMIZE
    @SW_MAXIMIZE
    @SW_RESTORE
    @SW_DISABLE
    @SW_ENABLE
    @SW_LOCK
    @SW_UNLOCK
En consultant votre code, je vois aussi que vous utilisez une variable pour connaître l'état d'une fenêtre. Vous devriez plutôt utiliser la fonction WinGetState, qui permet de savoir si une fenêtre est :
  • Existe
    Visible
    Valide
    Active
    Minimisée
    Maximisée


Voici un code pour illustrer ce que je viens de dire :

Code : Tout sélectionner

#include<GUIConstantsEx.au3>

$Form1 = GUICreate("Form1", 195, 50, -1, -1)
$Button1 = GUICtrlCreateButton("Masque", 8, 20, 75, 25, 0)
$Exit = GUICtrlCreateButton("Exit", 104, 20, 75, 25, 0)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE, $Exit
            Exit
            
        Case $Button1
            GUISetState(@SW_HIDE, $Form1)
            _GUIIsVisible($Form1)
            GUISetState(@SW_SHOW, $Form1)
            _GUIIsVisible($Form1)
    EndSwitch
WEnd

Func _GUIIsVisible($GUI)
    $State = WinGetState($Form1)
    If BitAnd($State, 2) Then
        Msgbox(0,"","Visible")
    Else
        Msgbox(0,"","Masquée")
    EndIf
EndFunc
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é".
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [Func] Show... fonction pour cacher /montrer votre gui

#3

Message par SagePourpre »

Tlem a écrit :Pas besoin de fonction particulière pour cacher une GUI.
La simple ligne suivante suffit :

Code : Tout sélectionner

GUISetState(@SW_HIDE, $MainGUI)
Avec $MainGUI égal au Handle de la fenêtre principale.
Evidement on remplace la macro @SW_HIDE par @SW_SHOW pour afficher la GUI.

Pour seulement la cacher non, c'est certain. Mais cette fonction est pour cacher/montrer le gui lorsque on appuie sur une touche quelconque.

En reprenant les infos que tu m'as donnés, ça donne

Code : Tout sélectionner

hotkeyset("{F2}","show")
...

Code : Tout sélectionner

Func show()
    $State = WinGetState($Form1)
    If BitAnd($State, 2) Then
         GUISetState(@SW_HIDE, $Form1)
    Else
        GUISetState(@SW_SHOW, $Form1)
    EndIf
EndFunc
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Répondre