De nouveau de retour pour une 2ième question

J'ai un menu déroulant clic droit avec lequel j'ai eu un problème résolu ici https://www.autoitscript.fr/forum/viewt ... =3&t=14916 par mikell que je remercie encore pour ses explications

Suivant la sélection, il m'affiche une image différente. J'y suis arrivé sans trop comprendre le code

J'ai tricher, car quand je sélectionne une valeur dans le menu, je me retrouve avec les images superposées dans $MyTabsGui. Je met donc un rectangle blanc avant de modifier l'image. C'est pas beau du tout, mais ça marche.
Voulant faire un peu plus propre, si l'on pouvait m'expliquer comment je suis censé procéder car comme déjà dit j'ai vraiment du mal à comprendre ce que je fais avec AutoIt.
Merci.
Dossiers et quelques fichiers Tab
Partie qui me pose problème.
Code : Tout sélectionner
Func SetImageBand()
Local $aArray = StringSplit($Choix, '\', $STR_ENTIRESPLIT)
Local $iRows = UBound($aArray, $UBOUND_ROWS) ; Total number of rows
; Load PNG image
_GDIPlus_StartUp()
; Efface le Logo-Band ENFIN NON MET UN RECTANGLE BLANC PAR DESSUS LE DERNIER LOGOBAND
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Logo-Band.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($MyTabsGui)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 250, 1)
; Affiche le Logo-Band
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\" & $aArray[$iRows - 2] & "\" & $aArray[$iRows - 2] & "-Logo-Band.png")
If $hImage = "0" then
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Logo-Band.png")
EndIf
; Draw PNG image
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($MyTabsGui)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 250, 1)
; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ShutDown()
EndFunc
Code en entier [Je sais ce n'est pas beau, mais j'essaye d'apprendre

Code : Tout sélectionner
#include <Array.au3>
#include <AutoItConstants.au3>
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <file.au3>
#include <FontConstants.au3>
#include <GDIPlus.au3>
#include <GuiComboBox.au3>
#include <GuiConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiEdit.au3>
#include <GuiScrollBars.au3>
#include <GuiStatusBar.au3>
#include <Math.au3>
#include <MsgBoxConstants.au3>
#include <ScrollBarConstants.au3>
#include <StaticConstants.au3>
#include <StringConstants.au3>
#include <WindowsConstants.au3>
;~ Opt("MustDeclareVars", 1)
;~ DECLARATION VARIABLES GLOBALES
Global $hImage, $hGraphic
;~ CREATION DE LA FE?ETRE
Global $MyTabsGui = GUICreate("MyTabs", 800, 600,-1, -1, -1, $WS_EX_TOOLWINDOW + $WS_EX_WINDOWEDGE) ; TAILLE (800x600)
GUISetBkColor($COLOR_WHITE) ; SUR FOND BLANC
GUICtrlCreateLabel("TAILLE :", 50, 15, 45, 25) ; TEXTE
;~ CREATION DES BOUTONS
Local $FontSize = 10
Local $SmallFontButton = GUICtrlCreateButton("-1", 100, 10, 40, 25)
Local $NormalFontButton = GUICtrlCreateButton("10", 140, 10, 40, 25)
Local $BigFontButton = GUICtrlCreateButton("+1", 180, 10, 40, 25)
Local $CreationBoutonCours = GUICtrlCreateButton("Vidéo du Cours", 690, 10, 100, 25)
GUICtrlSetState ($CreationBoutonCours, $GUI_HIDE) ; CACHER LE BOUTON CI-DESSUS
;~ CREATION DE LA ZONE DE TEXTE OU SERONT LES TABLATURES
Local $Edit = GUICtrlCreateEdit("", 10,40,780,550, $ES_AUTOVSCROLL + $WS_VSCROLL + $ws_hscroll + $es_readonly)
GUICtrlSetFont(-1,10,800,default,'courier new') ; POLICE PAR DEFAUT ET TAILLE
;~ CREATION BOUTON "\" AVEC MENU DEROULANT CLIC DROIT AVEC EN ARBORESCENCE DOSSIERS / SOUS-DOSSIERS ET FICHIERS .TAB (FICHIER TXT)
Global $s[1000][2], $n
$boutonArbo = GUICtrlCreateButton("\",10,10,25,25)
Global $contexte = GUICtrlCreateContextMenu($boutonArbo)
parcourirDossier($contexte,@ScriptDir,"*.tab",3)
Redim $s[$n][2]
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
;~ ACTION SUR LA SELECTION
For $i = 0 to UBound($s)-1
If $msg = $s[$i][0] Then
GUICtrlSetState ($CreationBoutonCours, $GUI_HIDE) ; CACHER LE BOUTON SI PAS DE VIDEO DE COURS
;MsgBox(64, "Choix", "Votre choix est " & $s[$i][1])
GUICtrlSetData($Edit,"")
$Choix = $s[$i][1]
$iFile = Fileread($Choix)
GUICtrlSetData($Edit,$iFile,1)
_GUICtrlEdit_Scroll($Edit, $SB_TOP)
SetTitleMyTabs() ; FUNC QUI MODIFIE LE NOM DE LA FENETRE : NOM [TITRE]
SetImageBand() ; FUNC QUI AFFICHE LE LOGO DE L'ARTISTE
ReadHeadFile() ; FUNC QUI VERIFIE QUE LES 4 PREMIERES LIGNES SONT DANS LE BON FORMAT
LanceVideoCours() ; FUNC QUI VERIFIE SI LA VIDEO DU COURS EXISTE
EndIf
Next
;~ OUVRE LA TABLATURE AVEC L'EDITEUR DE TEXTE WINDOWS PAR DEFAUT
;~ For $i = 0 to UBound($s)-1
;~ If $msg = $s[$i][0] Then ShellExecute($s[$i][1])
;~ Next
Select
Case $msg = $GUI_EVENT_CLOSE
_do_exit_stuff()
Case $msg = $SmallFontButton
$FontSize = $FontSize - 1
GUICtrlSetFont($Edit,$FontSize,800,default,'courier new')
Case $msg = $NormalFontButton
$FontSize = 10
GUICtrlSetFont($Edit,$FontSize,800,default,'courier new')
Case $msg = $BigFontButton
$FontSize = $FontSize + 1
GUICtrlSetFont($Edit,$FontSize,800,default,'courier new')
Case $msg = $CreationBoutonCours ; LANCE LA VIDEO DU COURS
;~ Local $aArray = StringSplit($Choix, '\', $STR_ENTIRESPLIT)
;~ Local $iRows = UBound($aArray, $UBOUND_ROWS) ; Total number of rows
ShellExecute(@ScriptDir & "\" & $aArray[$iRows - 2] & "\" & StringLeft ( $aArray[$iRows - 1], StringLen($aArray[$iRows - 1]) -4) & " [Cours].mp4")
EndSelect
WEnd
func _do_exit_stuff()
; CE QUE JE VEUX QUAND LE PROGRAMME CE FERME
Exit
endfunc
;~ FUNC QUI AFFICHE LES DOSSIERS / SOUS-DOSSIERS ET FICHIERS .TAB DANS LE MENU DEROULANT CLIC DROIT
Func parcourirDossier($sdd, $folder, $filter="*", $depth=-1)
If Int($depth) > 0 Then
Local $subFolders = _FileListToArray($folder,"*",2)
If Not @error Then
For $i = 1 To $subFolders[0]
;~ EXCLUSION DU REPERTOIRE _SAUV_ OU JE METS MES FICHIERS DE SAUVEGARDE AU3
if $subFolders[$i] <> "_SAUV_" then parcourirDossier(GUICtrlCreateMenu($subFolders[$i],$sdd),$folder&"\"&$subFolders[$i],$filter,_Max($depth-1,-1))
;~ parcourirDossier(GUICtrlCreateMenu($subFolders[$i],$sdd),$folder&"\"&$subFolders[$i],$filter,_Max($depth-1,-1))
Next
EndIf
GUICtrlCreateMenuItem("",$sdd)
Local $subFiles = _FileListToArray($folder,$filter,1)
If Not @error Then
For $i = 1 To $subFiles[0]
$s[$n][0] = GUICtrlCreateMenuItem($subFiles[$i],$sdd)
$s[$n][1] = $folder&"\"&$subFiles[$i]
$n += 1
Next
EndIf
EndIf
EndFunc
;~ FUNC QUI MODIFIE LA BARRE DE TITRE DE LA FENETRE AVEC LE NOM DU GROUPE ET LE TITRE DU MORCEAU
Func SetTitleMyTabs ()
Global $aArray = StringSplit($Choix, '\', $STR_ENTIRESPLIT)
Global $iRows = UBound($aArray, $UBOUND_ROWS) ; Total number of rows
Global $iCols = UBound($aArray, $UBOUND_COLUMNS) ; Total number of columns
;~ REMPLIT LE TABLEAU AVEC LES DONNEES
For $i = 0 To $iRows - 1
For $j = 0 To $iCols - 1
$aArray[$i][$j] = "Row: " & $i & " - Col: " & $j
Next
Next
WinSetTitle($MyTabsGui, "", $aArray[$iRows - 2] & " [" & StringLeft ( $aArray[$iRows - 1], StringLen($aArray[$iRows - 1]) -4) & "]" & " - MyTabs") ; MODIFIE LE TITRE
EndFunc
;~ FUNC QUI AFFICHE LE LOGO DE L'ARTISTE DANS LA GUI SUIVANT CE QUI EST SELECTIONNER DANS LE MENU
Func SetImageBand()
;~ Local $aArray = StringSplit($Choix, '\', $STR_ENTIRESPLIT)
;~ Local $iRows = UBound($aArray, $UBOUND_ROWS) ; Total number of rows
; CHARGE L'IMAGE PNG
_GDIPlus_StartUp()
;~ EFFACE LE LOGO ENFIN NON, MET UN RECTANGLE BLANC PAR DESSUS LE DERNIER LOGO > A REVOIR
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Logo-Band.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($MyTabsGui)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 250, 1)
;~ AFFICHE LE LOGO
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\" & $aArray[$iRows - 2] & "\" & $aArray[$iRows - 2] & "-Logo-Band.png")
If $hImage = "0" then
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Logo-Band.png")
EndIf
;~ MsgBox(64, "Choix", "Votre choix est " & $hImage)
; DESSINE L'IMAGE PNG
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($MyTabsGui)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 250, 1)
; NETTOIE LES RESSOURCES
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ShutDown()
EndFunc
;~ FUNC QUI AFFICHE LE BOUTON SI LE FICHIER DU COURS DE GUITARE EXISTE
Func LanceVideoCours()
;~ Local $aArray = StringSplit($Choix, '\', $STR_ENTIRESPLIT)
;~ Local $iRows = UBound($aArray, $UBOUND_ROWS) ; Total number of rows
If FileExists(@ScriptDir & "\" & $aArray[$iRows - 2] & "\" & StringLeft ( $aArray[$iRows - 1], StringLen($aArray[$iRows - 1]) -4) & " [Cours].mp4") = 1 Then ; Si répertoire existe alors
GUICtrlSetState ($CreationBoutonCours, $GUI_SHOW )
;~ Local $CreationBoutonCours = GUICtrlCreateButton("Vidéo du Cours", 690, 10, 100, 25)
;~ ShellExecute(@ScriptDir & "\" & $aArray[$iRows - 2] & "\" & StringLeft ( $aArray[$iRows - 1], StringLen($aArray[$iRows - 1]) -4) & " [Cours].mp4")
EndIf
EndFunc
;~ FUNC VERIFIE QUE LES TABLATURES SONT BIEN AU BON FORMAT
Func ReadHeadFile()
$read = FileRead($Choix)
$line = StringSplit($read, @CR)
For $i = 1 To $line[0]
$var = FileReadLine($Choix, $i)
if ($i = 1 And StringLeft($var,10) <> "Artiste : ") or ($i = 2 And StringLeft($var,8) <> "Album : ") or ($i = 3 And StringLeft($var,8) <> "Titre : ") or ($i = 4 And StringLeft($var,8) <> "Tempo : ") Then
MsgBox(64, "Information", "Le début de la Tablature est incorrecte." & chr(10) & chr(10) & "Elle doit obligatoirement commencer par" & chr(10) & _
chr(10) & "Artiste : " & _
chr(10) & "Album : " & _
chr(10) & "Titre : " & _
chr(10) & "Tempo : " & _
chr(10) & chr(10) & "Actuellement, il y a sur la ligne " & $i & " : " & chr(10) & chr(10) & $var)
EndIf
Next
EndFunc