Page 1 sur 1

(GuiCtrlSetData) Clignotement sur les titres d'un Menu

Posté : ven. 06 juil. 2018 17:04
par yoonix
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

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

Posté : sam. 07 juil. 2018 14:19
par parazitenew
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)

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

Posté : sam. 07 juil. 2018 16:10
par yoonix
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)