Exemple N°1 :
On affiche une GUI 1 puis lors d'un clic sur un bouton de celle-ci, la GUI 1 disparaît pour faire place à la GUI 2.
Si on clique sur le bouton de la GUI 2 alors celle-ci disparaît et la GUI 1 ré-apparaît.
Dans cet exemple, la gestion des messages de GUI reste classique.
► Afficher le texteCode de l'exemple 1
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; ########## Début de la création de la GUI 1 ##########
$GUI1 = GUICreate("GUI 1", 172, 202, -1, -1)
$Lb1 = GUICtrlCreateLabel("Fenêtre GUI 1", 24, 8, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 24, 40, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 24, 72, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 24, 104, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Btn1 = GUICtrlCreateButton("Masque GUI 1 et Affiche GUI 2", 40, 144, 100, 46, BitOR($BS_MULTILINE,$BS_FLAT))
; ########## Fin de la création de la GUI 1 ##########
; ########## Début de la création de la GUI 2 ##########
$GUI2 = GUICreate("GUI 2", 172, 203, -1, -1)
$Lbl2 = GUICtrlCreateLabel("Fenêtre GUI 2", 24, 8, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Rd1 = GUICtrlCreateRadio("Radio1", 24, 40, 65, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Rd2 = GUICtrlCreateRadio("Radio2", 24, 72, 65, 17)
$Rd3 = GUICtrlCreateRadio("Radio3", 24, 104, 65, 17)
$Btn2 = GUICtrlCreateButton("Masque GUI 1 et Affiche GUI 2", 40, 144, 100, 46, BitOR($BS_MULTILINE,$BS_FLAT))
; ########## Fin de la création de la GUI 2 ##########
GUISetState(@SW_SHOW, $GUI1) ; On affiche la GUI1
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ; Si clic fermeture fenêtre GUI1 ou GUI2 on sort
Exit
Case $Btn1 ; Si clic sur le bouton $Btn1
GUISetState(@SW_HIDE, $GUI1) ; On Masque la GUI 1
GUISetState(@SW_SHOW, $GUI2) ; On affiche le GUI 2
Case $Btn2 ; Si clic sur le bouton $Btn2
GUISetState(@SW_HIDE, $GUI2) ; On Masque la GUI 2
GUISetState(@SW_SHOW, $GUI1) ; On affiche le GUI 1
EndSwitch
WEnd
Même chose que sur l'exemple N°1, sauf que cette fois-ci la gestion des messages de GUI prend en compte la GUI d'origine.
Avec cet exemple, on détermine quelle GUI envoi le message.
► Afficher le texteCode de l'exemple 2
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; ########## Début de la création de la GUI 1 ##########
$GUI1 = GUICreate("GUI 1", 172, 202, -1, -1)
$Lb1 = GUICtrlCreateLabel("Fenêtre GUI 1", 24, 8, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 24, 40, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 24, 72, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 24, 104, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Btn1 = GUICtrlCreateButton("Masque GUI 1 et Affiche GUI 2", 40, 144, 100, 46, BitOR($BS_MULTILINE,$BS_FLAT))
; ########## Fin de la création de la GUI 1 ##########
; ########## Début de la création de la GUI 2 ##########
$GUI2 = GUICreate("GUI 2", 172, 203, -1, -1)
$Lbl2 = GUICtrlCreateLabel("Fenêtre GUI 2", 24, 8, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Rd1 = GUICtrlCreateRadio("Radio1", 24, 40, 65, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Rd2 = GUICtrlCreateRadio("Radio2", 24, 72, 65, 17)
$Rd3 = GUICtrlCreateRadio("Radio3", 24, 104, 65, 17)
$Btn2 = GUICtrlCreateButton("Masque GUI 1 et Affiche GUI 2", 40, 144, 100, 46, BitOR($BS_MULTILINE,$BS_FLAT))
; ########## Fin de la création de la GUI 2 ##########
GUISetState(@SW_SHOW, $GUI1) ; On affiche la GUI1
While 1
$nMsg = GUIGetMsg(1) ; Ici on met 1 pour utiliser l'option avancée de GUIGetMsg.
Select
Case $nMsg[0] = $GUI_EVENT_CLOSE ; Si clic fermeture d'une des fenêtres GUI
If $nMsg[1] = $GUI1 Then ; Si le clic de fermeture provient de la GUI 1
MsgBox(64, "GUI1", "Vous fermez la GUI 1")
ElseIf $nMsg[1] = $GUI2 Then ; Si le clic de fermeture provient de la GUI 2
MsgBox(64, "GUI2", "Vous fermez la GUI 2")
EndIf
Exit
Case $nMsg[0] = $Btn1 and $nMsg[1] = $GUI1 ; Si clic sur le bouton $Btn1 de la GUI 1
GUISetState(@SW_HIDE, $GUI1) ; On Masque la GUI 1
GUISetState(@SW_SHOW, $GUI2) ; On affiche le GUI 2
Case $nMsg[0] = $Btn2 and $nMsg[1] = $GUI2 ; Si clic sur le bouton $Btn2 de la GUI 2
GUISetState(@SW_HIDE, $GUI2) ; On Masque la GUI 2
GUISetState(@SW_SHOW, $GUI1) ; On affiche le GUI 1
EndSelect
WEnd
Sur la base de l'exemple N°2, ici la GUI 2 devient une fenêtre enfant de la GUI 1.
Cette fois-ci, la GUI 1 n'est jamais masquée, mais elle est désactivée.
La GUI 2 apparaît en décalé pour montrer que les deux GUI's sont bien affichées.
► Afficher le texteCode de l'exemple 3
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; ########## Début de la création de la GUI 1 ##########
$GUI1 = GUICreate("GUI 1", 172, 202, -1, -1)
$Lb1 = GUICtrlCreateLabel("Fenêtre GUI 1", 24, 8, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 24, 40, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 24, 72, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 24, 104, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Btn1 = GUICtrlCreateButton("Affiche GUI 2", 40, 144, 100, 46, BitOR($BS_MULTILINE,$BS_FLAT))
; ########## Fin de la création de la GUI 1 ##########
; Récupère la position de GUI1 pour afficher GUI2 en décalé.
$GUI1_Pos = WinGetPos($GUI1, "")
; ########## Début de la création de la GUI 2 ##########
$GUI2 = GUICreate("GUI 2", 172, 203, $GUI1_Pos[0] + 50, $GUI1_Pos[1] + 50, -1, -1, $GUI1)
$Lbl2 = GUICtrlCreateLabel("Fenêtre GUI 2", 24, 8, 120, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Rd1 = GUICtrlCreateRadio("Radio1", 24, 40, 65, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Rd2 = GUICtrlCreateRadio("Radio2", 24, 72, 65, 17)
$Rd3 = GUICtrlCreateRadio("Radio3", 24, 104, 65, 17)
$Btn2 = GUICtrlCreateButton("Masque GUI 2", 40, 144, 100, 46, BitOR($BS_MULTILINE,$BS_FLAT))
; ########## Fin de la création de la GUI 2 ##########
GUISetState(@SW_SHOW, $GUI1) ; On affiche la GUI1
While 1
$nMsg = GUIGetMsg(1) ; Ici on met 1 pour utiliser l'option avancée de GUIGetMsg.
Select
Case $nMsg[0] = $GUI_EVENT_CLOSE ; Si clic fermeture d'une des fenêtres GUI
If $nMsg[1] = $GUI1 Then ; Si le clic de fermeture provient de la GUI 1
MsgBox(64, "GUI1", "Vous fermez la GUI 1")
Exit
ElseIf $nMsg[1] = $GUI2 Then ; Si le clic de fermeture provient de la GUI 2
MsgBox(64, "GUI2", "Vous fermez la GUI 2")
GUISetState (@SW_ENABLE, $GUI1) ; On ré-active la GUI 1
GUISwitch($GUI1) ; On passe à la GUI 1
GUISetState(@SW_HIDE, $GUI2) ; On Masque la GUI 2
EndIf
Case $nMsg[0] = $Btn1 and $nMsg[1] = $GUI1 ; Si clic sur le bouton $Btn1 de la GUI 1
GUISetState(@SW_SHOW, $GUI2) ; On affiche la GUI 2
GUISetState (@SW_DISABLE, $GUI1) ; On désactive la GUI 1
Case $nMsg[0] = $Btn2 and $nMsg[1] = $GUI2 ; Si clic sur le bouton $Btn2 de la GUI 2
GUISetState (@SW_ENABLE, $GUI1) ; On ré-active la GUI 1
GUISwitch($GUI1) ; On passe à la GUI 1
GUISetState(@SW_HIDE, $GUI2) ; On Masque la GUI 2
EndSelect
WEnd