Eviter de coincer un MessageRequester derrière une fenêtre
Publié : jeu. 08/avr./2010 14:03
Qu'il est rageant de se retrouver avec un MessageRequester caché derrière votre fenêtre à cause d'un stickyWindow. Fenêtre qui du coup n'est plus déplaçable..
Voilà une petit code pour débutant qui permet d'afficher un MessageRequester() même si la fenêtre est au 1er plan.
Fonctions utilisées : StickyWindow(), SetGadgetState(),GetGadgetState()
Principe :
On doit donc vérifier l'état de StickyWindow(). Si lorsque l'on clique sur le bouton, l'état est 1 alors on repasse cet état à 0.
Une fois le message terminé (que vous avez appuyé sur OK), on remet la fenêtre au 1er plan.
Voilà une petit code pour débutant qui permet d'afficher un MessageRequester() même si la fenêtre est au 1er plan.
Fonctions utilisées : StickyWindow(), SetGadgetState(),GetGadgetState()
Principe :
On doit donc vérifier l'état de StickyWindow(). Si lorsque l'on clique sur le bouton, l'état est 1 alors on repasse cet état à 0.
Une fois le message terminé (que vous avez appuyé sur OK), on remet la fenêtre au 1er plan.
Code : Tout sélectionner
;Voir un MessageRequester même si la fenêtre est au premier plan
; Ar-S / 2010 / PB 4.41
Enumeration
#W : #BT : #CheckBox_1
EndEnumeration
Global plan=1 ; Valeur du StickyWindow
Global NewPlan ; Valeur de comparaison
If OpenWindow(#W, #PB_Ignore, #PB_Ignore, 542, 302, "Window_0", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
StickyWindow(#W,plan)
ButtonGadget(#BT, 115, 95, 300, 85, "Clique pour tester")
CheckBoxGadget(#CheckBox_1, 125, 35, 295, 20, "garder au 1er plan")
SetGadgetState(#CheckBox_1,plan) ; on active par defaut la fenêtre au 1er plan
EndIf
;{- Event loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #CheckBox_1
plan=GetGadgetState(#CheckBox_1)
SetGadgetState(#CheckBox_1,plan)
Case #BT
NewPlan=plan ; On donne à newPlan la même valeur que Plan
If NewPlan=1 ; si la fenêtre est au 1er plan
NewPlan=0 ; On lui donne donc la valeur 0 qui permettra de passer la fenêtre au second plan
SetGadgetState(#CheckBox_1,NewPlan) ; On passe la fenêtre au second plan
EndIf
;On fait passer la fenêtre au second plan
StickyWindow(#W,NewPlan)
; on fait apparaitre le messagerequester()
MessageRequester("Youpi","Le MessageRequester au 1er plan"+Chr(10)+"Et on a l'option de 1er plan décochée")
; On vérifie que la valeur d'origine soit la même
If NewPlan<>plan ; Si ce n'est pas le cas
SetGadgetState(#CheckBox_1,plan) ; On redonne à la fenêtre l'état d'origine
EndIf
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #W
CloseWindow(#W)
Break
EndSelect
EndSelect
ForEver