Page 1 sur 1
[..] Désactiver et/ou activer les styles visuels
Posté : sam. 04 août 2012 23:26
par oregnier
Bonjour à tous/toutes,
Je dispose d'une interface graphique avec un menu principal nommé "Affichage" et deux sous-menu "Désactiver tous les styles visuels" et un deuxième "Activer les styles visuels"
Afin que ce soit plus parlant voici le code:
► Afficher le texte
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <ComboConstants.au3>
#include <GuiComboBox.au3>
_MainWinParent()
Func _MainWinParent()
;~ variables interface
Local $WinParent
Local $WinParentName = " Test "
Local $WinParentWidth = 440
Local $WinParentHeight = 57
;~ variables menu
Local $WinParentFileMenu
Local $WinParentViewMenu
;~ variables sous-menu
Local $WinParentFileMenuQuitItem
Local $WinParentViewMenuDisabledStyleItem
Local $WinParentViewMenuEnabledStyleItem
;~ Création de l'interface
$WinParent = GUICreate($WinParentName, $WinParentWidth, $WinParentHeight)
GUISetState()
;~ Création du menu
$WinParentFileMenu = GUICtrlCreateMenu("&Fichier")
$WinParentViewMenu = GUICtrlCreateMenu("&Affichage")
;~ Création du sous-menu
$WinParentFileMenuQuitItem = GUICtrlCreateMenuItem("Quitter" & @TAB & "Alt+F4", $WinParentFileMenu)
$WinParentViewMenuDisabledStyleItem = GUICtrlCreateMenuItem ("Désactiver tous les styles visuels", $WinParentViewMenu)
$WinParentViewMenuEnabledStyleItem = GUICtrlCreateMenuItem ("Activer les styles visuels", $WinParentViewMenu)
While 1
$GetMsg = GUIGetMsg()
Select
Case $GetMsg = $GUI_EVENT_CLOSE Or $GetMsg = $WinParentFileMenuQuitItem
ExitLoop
;~ désactiver les styles visuels
Case $GetMsg = $WinParentViewMenuDisabledStyleItem
If GUICtrlRead($WinParentViewMenuDisabledStyleItem) = 68 Then
GUICtrlSetState($WinParentViewMenuDisabledStyleItem ,65)
GUICtrlSetState($WinParentViewMenuEnabledStyleItem ,68)
_DisabledStyle()
GUIDelete($WinParent)
_MainWinParent()
EndIf
;~ activer les styles visuels
Case $GetMsg = $WinParentViewMenuEnabledStyleItem
If GUICtrlRead($WinParentViewMenuEnabledStyleItem) = 68 Then
GUICtrlSetState($WinParentViewMenuEnabledStyleItem ,65)
GUICtrlSetState($WinParentViewMenuDisabledStyleItem ,68)
_EnabledStyle()
GUIDelete($WinParent)
_MainWinParent()
EndIf
EndSelect ;~ Select
WEnd ;~ While
GUIDelete()
Exit
EndFunc ;~ _MainWinParent
;~ désactiver tous les styles visuels
Func _DisabledStyle()
DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
EndFunc
;~ activer les styles visuels
Func _EnabledStyle()
DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 1)
EndFunc
Je veux pouvoir choisir entre la désactivation et/ou l'activation des styles visuels et la seule parade que j'ai trouvé c'est de détruire l'interface principale et relancer la fonction principal pour obtenir le résultat escompté.
Pourriez-vous me guider vers quelques pistes s'il vous plaît ?
En vous remerciant par avance de vos réponses.
Re: [..] Désactiver et/ou activer les styles visuels
Posté : dim. 05 août 2012 00:31
par TT22
J'ai trouvé un moyen pour désactiver le style visuel sans avoir à ré-afficher la GUI.
Par contre pour le ré-activer je n'ai pas trouvé
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <ComboConstants.au3>
#include <GuiComboBox.au3>
#include <WinAPI.au3>
_MainWinParent()
Func _MainWinParent()
;~ variables interface
Local $WinParent
Local $WinParentName = " Test "
Global $WinParentWidth = 440
Global $WinParentHeight = 57
;~ variables menu
Local $WinParentFileMenu
Local $WinParentViewMenu
;~ variables sous-menu
Local $WinParentFileMenuQuitItem
Local $WinParentViewMenuDisabledStyleItem
Local $WinParentViewMenuEnabledStyleItem
;~ Création de l'interface
Global $WinParent = GUICreate($WinParentName, $WinParentWidth, $WinParentHeight)
GUISetState()
;~ Création du menu
$WinParentFileMenu = GUICtrlCreateMenu("&Fichier")
$WinParentViewMenu = GUICtrlCreateMenu("&Affichage")
;~ Création du sous-menu
$WinParentFileMenuQuitItem = GUICtrlCreateMenuItem("Quitter" & @TAB & "Alt+F4", $WinParentFileMenu)
$WinParentViewMenuDisabledStyleItem = GUICtrlCreateMenuItem ("Désactiver tous les styles visuels", $WinParentViewMenu)
$WinParentViewMenuEnabledStyleItem = GUICtrlCreateMenuItem ("Activer les styles visuels", $WinParentViewMenu)
While 1
$GetMsg = GUIGetMsg()
Select
Case $GetMsg = $GUI_EVENT_CLOSE Or $GetMsg = $WinParentFileMenuQuitItem
ExitLoop
;~ désactiver les styles visuels
Case $GetMsg = $WinParentViewMenuDisabledStyleItem
If GUICtrlRead($WinParentViewMenuDisabledStyleItem) = 68 Then
GUICtrlSetState($WinParentViewMenuDisabledStyleItem ,65)
GUICtrlSetState($WinParentViewMenuEnabledStyleItem ,68)
_DisabledStyle()
EndIf
;~ activer les styles visuels
Case $GetMsg = $WinParentViewMenuEnabledStyleItem
If GUICtrlRead($WinParentViewMenuEnabledStyleItem) = 68 Then
GUICtrlSetState($WinParentViewMenuEnabledStyleItem ,65)
GUICtrlSetState($WinParentViewMenuDisabledStyleItem ,68)
GUIDelete($WinParent)
_MainWinParent()
EndIf
EndSelect ;~ Select
WEnd ;~ While
GUIDelete()
Exit
EndFunc ;~ _MainWinParent
;~ désactiver tous les styles visuels
Func _DisabledStyle()
$rgn = _WinAPI_CreateRectRgn(0, 0, $WinParentWidth+10, $WinParentHeight+50)
_WinAPI_SetWindowRgn($WinParent, $rgn)
EndFunc
Re: [..] Désactiver et/ou activer les styles visuels
Posté : dim. 05 août 2012 01:25
par TopXm
Hello
Bizarre le menu avec les deux options, attendu que coché c'est actif et décoché inactif, une seule ligne aurait suffit non ?
Pis, relancer _MainWinParent() qui comprend la boucle While alors qu'on est déjà dans une boucle While c'est un peu chaud non ?
M'enfin, j'ai juste changé l'activation / désactivation et évité de reloader la GUI, c'est un poil lent sur l'activation / Désactivation mais ça m'a l'air de fonctionner
► Afficher le texteActiver/Désactiver Theme
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <ComboConstants.au3>
#include <GuiComboBox.au3>
#include <WinAPI.au3>
#include <SendMessage.au3>
;~ variables interface
Local $WinParent
Local $WinParentName = " Test "
Global $WinParentWidth = 440
Global $WinParentHeight = 57
;~ variables menu
Local $WinParentFileMenu
Local $WinParentViewMenu
;~ variables sous-menu
Local $WinParentFileMenuQuitItem
Local $WinParentViewMenuDisabledStyleItem
Local $WinParentViewMenuEnabledStyleItem
_MainWinParent()
While 1
$GetMsg = GUIGetMsg()
Select
Case $GetMsg = $GUI_EVENT_CLOSE Or $GetMsg = $WinParentFileMenuQuitItem
ExitLoop
;~ désactiver les styles visuels
Case $GetMsg = $WinParentViewMenuDisabledStyleItem
If GUICtrlRead($WinParentViewMenuDisabledStyleItem) = 68 Then
GUICtrlSetState($WinParentViewMenuDisabledStyleItem, 65)
GUICtrlSetState($WinParentViewMenuEnabledStyleItem, 68)
_ChangeStyle(0)
EndIf
;~ activer les styles visuels
Case $GetMsg = $WinParentViewMenuEnabledStyleItem
If GUICtrlRead($WinParentViewMenuEnabledStyleItem) = 68 Then
GUICtrlSetState($WinParentViewMenuEnabledStyleItem, 65)
GUICtrlSetState($WinParentViewMenuDisabledStyleItem, 68)
_ChangeStyle(1)
EndIf
EndSelect ;~ Select
WEnd ;~ While
GUIDelete()
Exit
Func _ChangeStyle($Active = 1)
DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", $Active)
_SendMessage($WinParent, $WM_THEMECHANGED)
EndFunc
Func _MainWinParent()
;~ Création de l'interface
Global $WinParent = GUICreate($WinParentName, $WinParentWidth, $WinParentHeight)
GUISetState()
;~ Création du menu
$WinParentFileMenu = GUICtrlCreateMenu("&Fichier")
$WinParentViewMenu = GUICtrlCreateMenu("&Affichage")
;~ Création du sous-menu
$WinParentFileMenuQuitItem = GUICtrlCreateMenuItem("Quitter" & @TAB & "Alt+F4", $WinParentFileMenu)
$WinParentViewMenuDisabledStyleItem = GUICtrlCreateMenuItem("Désactiver tous les styles visuels", $WinParentViewMenu)
$WinParentViewMenuEnabledStyleItem = GUICtrlCreateMenuItem("Activer les styles visuels", $WinParentViewMenu)
EndFunc ;==>_MainWinParent