(GuiCtrlSetData) Clignotement sur les titres d'un Menu

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
yoonix
Niveau 1
Niveau 1
Messages : 2
Enregistré le : ven. 06 juil. 2018 15:33
Status : Hors ligne

(GuiCtrlSetData) Clignotement sur les titres d'un Menu

#1

Message par yoonix » ven. 06 juil. 2018 16:04

Bonjour,

Débutant avec Autoit, nous souhaitons proposer une interface efficace regroupant des jeux et applications avec Windows 10 comme un media center.

Tout fonctionne sauf que nous avons un énorme problème dans une interface de sélection.
Le titre sélectionné et les titres de la liste "clignote" dès que nous défilons dans celle-ci ce qui est très désagréable. :mal:

Malgré beaucoup de recherches sans résultats, nous avons besoin de votre aide si vous pouviez nous éclairer à ce sujet. :mrgreen:

Je vous remercie
If $InterfaceSelectionne[$affichage] = "Nintendo" Then
                $ProcessConsole = "Jnes 1.2"
                $AffichageJeu = 1
                $boucleConsole = 1
                Global $myGamePadHandle = GPExInitialize() ; Get a handle. This doesn't have to be global but needs to be passed to all the other functions.
                Global $myID = 0 ; We want to monitor the default GamePad
                ; Clavier
                HotKeySet ("{LEFT}", "_hotkeypressedL2")
                HotKeySet ("{RIGHT}", "_hotkeypressedR2")
                HotKeySet ("a", "_ExecuterJeuNintendo")
                HotKeySet ("b", "_Sortieboucle")


                $Dossierjeu = ".\Games\Nintendo"
                $Emulateur = ".\Apps\Nintendo\Jnes.exe"
                ; Lit le fichier du script courant dans un tableau en utilisant le chemin du fichier.
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "        <path>.", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "</path>", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "        <name>", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "</name>", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "        <desc>", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "</desc>", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "        <image>.", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "</image>", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "<gameList>", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", " [FRANCE]", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", " [EUROPE]", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", " [USA]", "")
                _ReplaceStringInFile (".\Games\Nintendo\gamelist.xml", "/", "\")
                $Gamelist = FileReadToArray (".\Games\Nintendo\gamelist.xml")
                $NombreDeLigne = _FileCountLines (".\Games\Nintendo\gamelist.xml")
                $j =0
                For $i = 3 To $NombreDeLigne step 13
                        $j = $j + 1
                        $aArrayCheminDuJeu[$j] = FileReadLine (".\Games\Nintendo\gamelist.xml", $i)
                        $aArrayNomDuJeu[$j] = FileReadLine (".\Games\Nintendo\gamelist.xml", $i + 1)
                        $aArrayResumerDuJeu[$j] = FileReadLine (".\Games\Nintendo\gamelist.xml", $i +2)
                        $aArrayImageDuJeu[$j] = FileReadLine (".\Games\Nintendo\gamelist.xml", $i +3)
                Next
                if $j < 7  Then
                        For $j = $j + 1 To 7
                                $aArrayCheminDuJeu[$j] = ""
                                $aArrayNomDuJeu[$j] = ""
                                $aArrayResumerDuJeu[$j] = ""
                                $aArrayImageDuJeu[$j] = ""
                        Next
                        $j = 7
                EndIf
                $NombreDeJeu = $j
                Global $FenetreConsole = GUICreate("Nintendo", 1280, 720, 0, 0, $WS_POPUP)
                Global $Pic0 = GUICtrlCreatePic(".\Themes\Default\Background\Nintendo.jpg", 0, 0, 1280, 720)
                Global $Pic1 = GUICtrlCreatePic(".\Games\Nintendo" & $aArrayImageDuJeu [1], 206, 132, 302, 414)
                GUICtrlCreateLabel ($Pseudo, 400, 28, 480, 40, BitOR($SS_CENTER, $SS_CENTERIMAGE))
                GUICtrlSetFont(-1, 25, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFFFFFF)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
                Global $l2 = GUICtrlCreateButton("L2", 0, 0, 1, 1)
                GUICtrlSetState ( -1, $GUI_HIDE)
                Global $r2 = GUICtrlCreateButton("R2", 0, 2, 1, 1)
                GUICtrlSetState ( -1, $GUI_HIDE)
                $Titre = GUICtrlCreateLabel ($aArrayNomDuJeu [1], 554, 126, 526, 72, BitOR($SS_CENTER,$SS_CENTERIMAGE))
                GUICtrlSetFont(-1, 30, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFF0000)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                $Label5 = GUICtrlCreateLabel ($aArrayNomDuJeu [$NombreDeJeu - 2], 568, 306, 498, 34)
                GUICtrlSetFont(-1, 20, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFFFFFF)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                $Label6 = GUICtrlCreateLabel ($aArrayNomDuJeu [$NombreDeJeu - 1], 568, 340, 498, 34)
                GUICtrlSetFont(-1, 20, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFFFFFF)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                $Label7 = GUICtrlCreateLabel ($aArrayNomDuJeu [$NombreDeJeu], 568, 374, 498, 34)
                GUICtrlSetFont(-1, 20, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFFFFFF)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                $Label1 = GUICtrlCreateLabel ($aArrayNomDuJeu [$AffichageJeu], 568, 408, 498, 34)
                GUICtrlSetFont(-1, 20, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFFFFFF)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                $Label2 = GUICtrlCreateLabel ($aArrayNomDuJeu [$AffichageJeu + 1], 568, 442, 498, 34)
                GUICtrlSetFont(-1, 20, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFFFFFF)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                $Label3 = GUICtrlCreateLabel ($aArrayNomDuJeu [$AffichageJeu + 2], 568, 476, 498, 34)
                GUICtrlSetFont(-1, 20, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFFFFFF)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                $Label4 = GUICtrlCreateLabel ($aArrayNomDuJeu [$AffichageJeu + 3], 568, 510, 498, 34)
                GUICtrlSetFont(-1, 20, 800, 0, "Arial")
                GUICtrlSetColor(-1, 0xFFFFFF)
                GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                ;Heure font transparent
;               GUICtrlCreateLabel (@HOUR &":" & @MIN, 1131, 28, 90, 25, BitOR($SS_CENTER,$SS_CENTERIMAGE) )
;               GUICtrlSetFont(-1, 25, 800, 0, "Arial")
;               GUICtrlSetColor(-1, 0xFFFFFF)
;               GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                ;Batterie
;               Global $g_aidLabel[4]
;               $i = 2
;               $g_aidLabel[$i] = GUICtrlCreateLabel('Unknown', 1034, 28, 90, 25, BitOR($SS_CENTER,$SS_CENTERIMAGE))
;               GUICtrlSetFont(-1, 25, 800, 0, "Arial")
;               GUICtrlSetColor(-1, 0xFFFFFF)
;               GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; ArriËre plan du label transparent
                ;AdlibRegister('_BatteryStatus', 10000)
                GUISetState ()
                ;Sleep (500)
                ;$A = GUICtrlCreateLabel("", 668, 408, 411, 33)
                ;GUICtrlSetBkColor(-1, 0x000000)
                ;$B = GUICtrlCreateLabel ($aArrayResumerDuJeu [$AffichageJeu], 680, 311, 385, 227, $SS_LEFT)
                ;GUICtrlSetColor(-1, 0xFFFFFF)
                ;GUICtrlSetBkColor(-1, 0x000000)
                ;$tempoboucle = 1000
                GUIDelete($Menu)

                Do

                        $nMsg = GUIGetMsg()
                        ;$tempoboucle = $tempoboucle + 1
                        If $nMsg = $r2 Then $AffichageJeu = $AffichageJeu + 1
                        if $aArrayNomDuJeu [$AffichageJeu] = "" Then $AffichageJeu = 1
                        If $AffichageJeu > $NombreDeJeu Then $AffichageJeu = 1
                        If $nMsg = $l2 Then
                                $AffichageJeu = $AffichageJeu - 1
                                If $AffichageJeu < 1 Then
                                        $AffichageJeu = $NombreDeJeu
                                        For $i = 1 to 6
                                                if $aArrayNomDuJeu [$AffichageJeu] = "" Then $AffichageJeu = $AffichageJeu - 1
                                        Next
                                EndIf
                        EndIf
                        If $nMsg = $r2 Or $nMsg = $l2 Then
                                ;$tempoboucle = 0
                                GUISetState (@SW_LOCK)
                                GUICtrlSetData ($Titre, $aArrayNomDuJeu [$AffichageJeu])
                                GUICtrlSetImage($Pic1, ".\Games\Nintendo" & $aArrayImageDuJeu [$AffichageJeu])
                                $AffichageJeu2 = $AffichageJeu -3
                                If $AffichageJeu2 < 1 Then $AffichageJeu2 = $NombreDeJeu + $AffichageJeu2
                                GUICtrlSetData ($Label5, $aArrayNomDuJeu [$AffichageJeu2])
                                $AffichageJeu2 = $AffichageJeu - 2
                                If $AffichageJeu2 < 1 Then $AffichageJeu2 = $NombreDeJeu + $AffichageJeu2
                                GUICtrlSetData ($Label6, $aArrayNomDuJeu [$AffichageJeu2])
                                $AffichageJeu2 = $AffichageJeu - 1
                                If $AffichageJeu2 < 1 Then $AffichageJeu2 = $NombreDeJeu + $AffichageJeu2
                                GUICtrlSetData ($Label7, $aArrayNomDuJeu [$AffichageJeu2])
                                GUICtrlSetData ($Label1, $aArrayNomDuJeu [$AffichageJeu])
                                $AffichageJeu2 = $AffichageJeu + 1
                                If $AffichageJeu2 > $NombreDeJeu Then $AffichageJeu2 = $AffichageJeu2 - $NombreDeJeu
                                GUICtrlSetData ($Label2, $aArrayNomDuJeu [$AffichageJeu2])
                                $AffichageJeu2 = $AffichageJeu + 2
                                If $AffichageJeu2 > $NombreDeJeu Then $AffichageJeu2 = $AffichageJeu2 - $NombreDeJeu
                                GUICtrlSetData ($Label3, $aArrayNomDuJeu [$AffichageJeu2])
                                $AffichageJeu2 = $AffichageJeu + 3
                                If $AffichageJeu2 > $NombreDeJeu Then $AffichageJeu2 = $AffichageJeu2 - $NombreDeJeu
                                GUICtrlSetData ($Label4, $aArrayNomDuJeu [$AffichageJeu2])
                                GUISetState (@SW_UNLOCK)
                                ;GUICtrlDelete ($A)
                                ;GUICtrlDelete ($B)
                        EndIf
                        ;if $tempoboucle = 100 Then
                        ;       $A = GUICtrlCreateLabel("", 668, 408, 411, 33)
                        ;       GUICtrlSetBkColor(-1, 0x000000)
                        ;       $B = GUICtrlCreateLabel ($aArrayResumerDuJeu [$AffichageJeu], 680, 311, 385, 227, $SS_LEFT )
                        ;       GUICtrlSetBkColor(-1, 0x000000)
                        ;       GUICtrlSetColor(-1, 0xFFFFFF)
                        ;EndIf

                        ; Manette
                        Sleep(100)
                        $pressedbutton = GPExGetPressed($myGamePadHandle, $myID)
                        Select
                                Case BitAND($pressedbutton, GPExButton(5)); Bouton L2
                                        _hotkeypressedL2 ()
                                Case BitAND($pressedbutton, GPExButton(6)); Bouton R2
                                        _hotkeypressedR2 ()
                                ;Case BitAND($pressedbutton, GPExButton(4)); Bouton Y
                                        ;_Afficheparametre()
                                Case BitAND($pressedbutton, GPExButton(1)); Bouton A
                                        _ExecuterJeuNintendo()
                                Case BitAND($pressedbutton, GPExButton(2)); Bouton B
                                        _Sortieboucle()
                        EndSelect
                        $PressedCroix = GPExGetPOV($myGamePadHandle, $myID)
                        If $PressedCroix = 00000 Then _hotkeypressedL2 () ; Croix haut
                        If $PressedCroix = 18000 Then _hotkeypressedR2 () ; Croix bas

                Until $nMsg = $GUI_EVENT_CLOSE
                        EndIf
$nMsg = $GUI_EVENT_CLOSE

Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Contact :
Status : Hors ligne

Re: (GuiCtrlSetData) Clignotement sur les titres d'un Menu

#2

Message par parazitenew » sam. 07 juil. 2018 13:19

Bonjour,

si ça clignote; c'est parce que l'information est rafraîchie à chaque fois; il faudrait rafraîchir uniquement l'information dont on a besoin à un moment précis.

Pour l'heure, tu peux essayer d'ajouter le style $WS_EX_COMPOSITED au GUI. (trouvé sur le forum EN)

yoonix
Niveau 1
Niveau 1
Messages : 2
Enregistré le : ven. 06 juil. 2018 15:33
Status : Hors ligne

Re: (GuiCtrlSetData) Clignotement sur les titres d'un Menu  

#3

Message par yoonix » sam. 07 juil. 2018 15:10

Bonjour,

le style $WS_EX_COMPOSITED nous sera sans doute utile pour l'heure, merci !

Nous avons masqué le problème en créant une Gui qui s'affichera toujours par dessus avec l' ex style $WS_EX_TOPMOST, pour ensuite supprimer cette dernière.
If $nMsg = $r2 Or $nMsg = $l2 Then
                                ;$tempoboucle = 0
                                $ChargementTitre = GUICreate ("TitreJeu", 880, 36, 200, 144, $WS_POPUP, $WS_EX_TOPMOST)
                                GUISetBkColor(0x0000000)
                                GUISetState (@SW_SHOW)
                                $ChargementListe = GUICreate ("ListeJeu", 386, 238, 680, 306, $WS_POPUP, $WS_EX_TOPMOST)
                                GUISetBkColor(0x0000000)
                                GUICtrlCreateGraphic(0, 102, 386, 34)
                                GUICtrlSetBkColor(-1, 0xFC0C18)
                                GUISetState (@SW_SHOW)
                                GUICtrlSetData ($Titre, $aArrayNomDuJeu [$AffichageJeu])
                                GUICtrlSetImage($Pic1, ".\Games\Super Nintendo" & $aArrayImageDuJeu [$AffichageJeu])
                                $AffichageJeu2 = $AffichageJeu -3
                                If $AffichageJeu2 < 1 Then $AffichageJeu2 = $NombreDeJeu + $AffichageJeu2
                                GUICtrlSetData ($Label5, $aArrayNomDuJeu [$AffichageJeu2])
                                $AffichageJeu2 = $AffichageJeu - 2
                                If $AffichageJeu2 < 1 Then $AffichageJeu2 = $NombreDeJeu + $AffichageJeu2
                                GUICtrlSetData ($Label6, $aArrayNomDuJeu [$AffichageJeu2])
                                $AffichageJeu2 = $AffichageJeu - 1
                                If $AffichageJeu2 < 1 Then $AffichageJeu2 = $NombreDeJeu + $AffichageJeu2
                                GUICtrlSetData ($Label7, $aArrayNomDuJeu [$AffichageJeu2])
                                GUICtrlSetData ($Label1, $aArrayNomDuJeu [$AffichageJeu])
                                $AffichageJeu2 = $AffichageJeu + 1
                                If $AffichageJeu2 > $NombreDeJeu Then $AffichageJeu2 = $AffichageJeu2 - $NombreDeJeu
                                GUICtrlSetData ($Label2, $aArrayNomDuJeu [$AffichageJeu2])
                                $AffichageJeu2 = $AffichageJeu + 2
                                If $AffichageJeu2 > $NombreDeJeu Then $AffichageJeu2 = $AffichageJeu2 - $NombreDeJeu
                                GUICtrlSetData ($Label3, $aArrayNomDuJeu [$AffichageJeu2])
                                $AffichageJeu2 = $AffichageJeu + 3
                                If $AffichageJeu2 > $NombreDeJeu Then $AffichageJeu2 = $AffichageJeu2 - $NombreDeJeu
                                GUICtrlSetData ($Label4, $aArrayNomDuJeu [$AffichageJeu2])
                                GUIDelete ($ChargementTitre)
                                GUIDelete ($ChargementListe)

Répondre