[R]Incrustation d'icones dans la barre de menu
Posté : ven. 03 juil. 2020 12:52
Bonjour,
Je viens de faire un petit proof of concept d'une barre de menu dans une fenêtre afin d'y afficher des icônes en ayant arrangé un exemple trouvé sur le net.
Ma question est la suivante : Je dispose d’icônes au format "ico" (je peux les convertir ou en trouver d'autre en bmp/png etc) en 16x16. Connaitriez vous une méthode plus simple (ou plus optimisé) afin d'arriver au même résultat ?
Avec la méthode précédente, certain de mes icônes sont comme "baveux" alors que les fichiers "ico" parraissent propre (question de conversion en bitmap ?)
Merci d'avance.
Je viens de faire un petit proof of concept d'une barre de menu dans une fenêtre afin d'y afficher des icônes en ayant arrangé un exemple trouvé sur le net.
Code : Tout sélectionner
#pragma compile(Icon, .\ICO\POW10.ico)
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <Constants.au3>
#include <GUIConstants.au3>
#include <GUIMenu.au3>
#include <GDIPlus.au3>
#RequireAdmin
Opt ("GUIOnEventMode", 1)
Global $StopScript = False
#Region ### START Koda GUI section ###
Global $Form1 = GUICreate("Form1", 260, 200, 192, 124)
Global $MenuItemFile = GUICtrlCreateMenu("&Fichier")
Global $MenuItemSystemInfo = GUICtrlCreateMenuItem("&Informations système", $MenuItemFile)
Global $MenuItemSeparation1 = GUICtrlCreateMenuItem("", $MenuItemFile, 2)
Global $MenuItemAllCheck = GUICtrlCreateMenuItem("Tout &coher", $MenuItemFile)
Global $MenuItemAllUncheck = GUICtrlCreateMenuItem("Tout &décocher", $MenuItemFile)
Global $MenuItemSeparation2 = GUICtrlCreateMenuItem("", $MenuItemFile, 5)
Global $MenuItemExit = GUICtrlCreateMenuItem("&Quitter", $MenuItemFile)
Global $MenuItemHelp = GUICtrlCreateMenu("&?")
Global $MenuItemAbout = GUICtrlCreateMenuItem("A &Propos", $MenuItemHelp)
_GDIPlus_Startup()
Global $IconSystemInfo = _WinAPI_LoadImage(2, ".\ICO\InfoSys.ico", $IMAGE_ICON, 16, 16, $LR_LOADFROMFILE)
Global $IconAllCheck = _WinAPI_LoadImage(2, ".\ICO\Check.ico", $IMAGE_ICON, 16, 16, $LR_LOADFROMFILE)
Global $IconAllUnCheck = _WinAPI_LoadImage(2, ".\ICO\Uncheck.ico", $IMAGE_ICON, 16, 16, $LR_LOADFROMFILE)
Global $IconExit = _WinAPI_LoadImage(2, ".\ICO\Exit.ico", $IMAGE_ICON, 16, 16, $LR_LOADFROMFILE)
Global $IconAbout = _WinAPI_LoadImage(2, ".\ICO\About.ico", $IMAGE_ICON, 16, 16, $LR_LOADFROMFILE)
Global $BitmapSystemInfo = _GDIPlus_BitmapCreateFromHICON($IconSystemInfo)
Global $BitmapAllCheck = _GDIPlus_BitmapCreateFromHICON($IconAllCheck)
Global $BitmapAllUnCheck = _GDIPlus_BitmapCreateFromHICON($IconAllUnCheck)
Global $BitmapExit = _GDIPlus_BitmapCreateFromHICON($IconExit)
Global $BitmapAbout = _GDIPlus_BitmapCreateFromHICON($IconAbout)
Global $GDIBitmapSystemInfo = _GDIPlus_BitmapCreateHBITMAPFromBitmap($BitmapSystemInfo)
Global $GDIBitmapAllCheck = _GDIPlus_BitmapCreateHBITMAPFromBitmap($BitmapAllCheck)
Global $GDIBitmapAllUnCheck = _GDIPlus_BitmapCreateHBITMAPFromBitmap($BitmapAllUnCheck)
Global $GDIBitmapExit = _GDIPlus_BitmapCreateHBITMAPFromBitmap($BitmapExit)
Global $GDIBitmapAbout = _GDIPlus_BitmapCreateHBITMAPFromBitmap($BitmapAbout)
_GUICtrlMenu_SetItemBmp(GUICtrlGetHandle($MenuItemFile), 0, $GDIBitmapSystemInfo)
_GUICtrlMenu_SetItemBmp(GUICtrlGetHandle($MenuItemFile), 2, $GDIBitmapAllCheck)
_GUICtrlMenu_SetItemBmp(GUICtrlGetHandle($MenuItemFile), 3, $GDIBitmapAllUnCheck)
_GUICtrlMenu_SetItemBmp(GUICtrlGetHandle($MenuItemFile), 5, $GDIBitmapExit)
_GUICtrlMenu_SetItemBmp(GUICtrlGetHandle($MenuItemHelp), 0, $GDIBitmapAbout)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
#Region GUI2
Global $Form2 = GUICreate("Form2", 200, 100)
GUISetState(@SW_HIDE)
#EndRegion GUI2
GUISetOnEvent ($GUI_EVENT_CLOSE, "STOP", $Form1)
GUISetOnEvent ($GUI_EVENT_CLOSE, "CLOSEINFOSYS", $Form2)
GUICtrlSetOnEvent ($MenuItemExit, "STOP")
GUICtrlSetOnEvent ($MenuItemSystemInfo, "OPENINFOSYS")
While Not $StopScript
Sleep (100)
WEnd
Func STOP()
_GDIPlus_BitmapDispose($BitmapSystemInfo)
_GDIPlus_BitmapDispose($BitmapAllCheck)
_GDIPlus_BitmapDispose($BitmapAllUnCheck)
_GDIPlus_BitmapDispose($BitmapExit)
_GDIPlus_BitmapDispose($BitmapAbout)
_WinAPI_DeleteObject($GDIBitmapSystemInfo)
_WinAPI_DeleteObject($GDIBitmapAllCheck)
_WinAPI_DeleteObject($GDIBitmapAllUnCheck)
_WinAPI_DeleteObject($GDIBitmapExit)
_WinAPI_DeleteObject($GDIBitmapAbout)
_WinAPI_DestroyIcon($IconSystemInfo)
_WinAPI_DestroyIcon($IconAllCheck)
_WinAPI_DestroyIcon($IconAllUnCheck)
_WinAPI_DestroyIcon($IconExit)
_WinAPI_DestroyIcon($IconAbout)
_GDIPlus_Shutdown()
$StopScript = True
EndFunc
Func OPENINFOSYS()
GUISetState (@SW_SHOW, $Form2)
EndFunc
Func CLOSEINFOSYS()
GUISetState (@SW_HIDE, $Form2)
EndFunc
Avec la méthode précédente, certain de mes icônes sont comme "baveux" alors que les fichiers "ico" parraissent propre (question de conversion en bitmap ?)
Merci d'avance.