Je trouve dommage l'entré "activer le son" en plein milieu du menu, c'est des options donc ça devrais être caché. Et la, on a l'impression que c'est le plus important.
Je n'aurais pas fait de sous-menu mais un gros menu avec des séparations et des titres (menu désactivé pour faire les titres, avec une icône approprié, je pense que ce serait plus classe)
L'autre point dommage, c'est l'utilisation de BMP ou lieu de PNG, c'est du coup moins esthétique. Sinon, tu aurais pu charger les icônes directement des applications.
Voir ma librairie GetIcon dont je te copie le code ici :
Code : Tout sélectionner
Global OS
ProcedureDLL GetIcon_Init()
OS = OSVersion()
EndProcedure
ProcedureDLL.l GetIconFile(IconFile.s, Size.l) ; Get icon 16*16, 32*32 or 48*48
Protected hIcon.l, FileInfo.SHFILEINFO, dll_Shell32.l, hResult.l, *Guid.l
Select Size
Case #SHIL_SMALL, 16
SHIL = #SHIL_SMALL
Case #SHIL_LARGE, 32
SHIL = #SHIL_LARGE
Case #SHIL_EXTRALARGE, 48
SHIL = #SHIL_EXTRALARGE
Case #SHIL_JUMBO, 128, 256
If OS >= #PB_OS_Windows_Vista
SHIL = #SHIL_JUMBO
Else
SHIL = #SHIL_EXTRALARGE
EndIf
Default
SHIL = #SHIL_SMALL
EndSelect
If OS >= #PB_OS_Windows_XP ; Pour Windows XP et plus, toute taille d'icône
dll_Shell32 = OpenLibrary(#PB_Any, "Shell32.dll")
If dll_Shell32
*Guid = ?IID_IImageList
SHGetFileInfo_(IconFile, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_SYSICONINDEX)
hResult = CallFunction(dll_Shell32, "SHGetImageList", SHIL, *Guid, @ImageList.IImageList2)
If hResult = 0
ImageList\GetIcon(FileInfo\iIcon, #ILD_TRANSPARENT, @hIcon)
ImageList\Release()
EndIf
CloseLibrary(dll_Shell32)
EndIf
Else ; Avant windows XP, icône 16*16 ou 32*32
If SHIL = #SHIL_EXTRALARGE Or SHIL = #SHIL_LARGE
SHGetFileInfo_(IconFile, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_ICON | #SHGFI_LARGEICON)
hIcon = InfosFile\hIcon
Else
SHGetFileInfo_(IconFile, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_ICON | #SHGFI_SMALLICON)
hIcon = InfosFile\hIcon
EndIf
EndIf
ProcedureReturn hIcon
EndProcedure
ProcedureDLL.l GetSmallIconFile(IconFile.s) ; Get icon 16*16
; Cette procedure permet d'extraire l'ID de l'icône 16*16 associée au type de fichier ou au dossier dont l'adresse est IconFile
ProcedureReturn GetIconFile(IconFile.s, 16)
EndProcedure
ProcedureDLL.l GetLargeIconFile(IconFile.s) ; Get icon 32*32
; Cette procedure permet d'extraire l'ID de l'icône 32*32 associée au type de fichier ou au dossier dont l'adresse est IconFile
ProcedureReturn GetIconFile(IconFile.s, 32)
EndProcedure
ProcedureDLL.l GetExtraLargeIconFile(IconFile.s) ; Get icon 48*48
; Cette procedure permet d'extraire l'ID de l'icône 48*48 associée au type de fichier ou au dossier dont l'adresse est IconFile
ProcedureReturn GetIconFile(IconFile.s, 48)
EndProcedure
ProcedureDLL.l GetJumboIconFile(IconFile.s) ; Get icon 128*128 or 256*256
; Cette procedure permet d'extraire l'ID de l'icône 128*128 ou 256*256 associée au type de fichier ou au dossier dont l'adresse est IconFile
ProcedureReturn GetIconFile(IconFile.s, 128)
EndProcedure
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]