Tiens, j'ai retrouvé un code que j'avais posté il y a déjà bien longtemps
Mets tes icônes perso pour les tests.
Code : Tout sélectionner
; constantes 
#index                   =  0
#Fenetre_principale      = 1;#index  : #index = #index + 1
#MonImage                = 2;#index  : #index = #index + 1
#MonImageCocher          = 3;#index  : #index = #index + 1
#MENU_Copier             = 4;#index  : #index = #index + 1
#MENU_Coller             = 5;#index  : #index = #index + 1
#MENU_Cocher             = 6;#index  : #index = #index + 1
#MENU_DeCocher           = 7;#index  : #index = #index + 1
#Menu                    = 8;#index  : #index = #index + 1
#MF_BYCOMMAND            = 0
#MF_BYPOSITION           = $400
#SM_CXMENUCHECK          = 71
#SM_CYMENUCHECK          = 72
; Variable globale
Global MenuIdentificateurWIndows.l
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Procedure AfficheIconeMenu(WIndowsMenuID,MenuId.l, ImageNormale.l, ImageCocher.l)
; WIndowsMenuID est le Handle du menu c'est à dire le numéro attribué par Windows au menu crée
; on récupère ce Handle lorsque l'on crée le menu;
; j'ai utilisé ceci : MenuIdentificateurWIndows = CreateMenu(#Menu, WindowID(#Fenetre_principale)) 
; MenuId est l'identificateur statique de l'élément du menu ou l'on veut afficher l'image
; pour cet exemple #MENU_Copier
; ImageNormale est l'image qui s'affichera en mode non coché (car on peut cocher un menu
; soit avec un espèce de v ou avec un petit rond plein ou dans le cas d'un menu avec une
; imagge, l'image en mode cochée sera différente de celle en mode non coché
;  ImageCocher est l'image qui s'affichera en coché 
  SetMenuItemBitmaps_(WIndowsMenuID,MenuId, #MF_BYCOMMAND, ImageNormale, ImageCocher)
EndProcedure 
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
;;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
If OpenWindow(#Fenetre_principale,100,100,500,300,#PB_Window_SystemMenu," Essai de Menus avec images")
   ;  creation d'un menu
;; -------------------- menu Fichier --------------------------
; récupère le Handle du Menu
MenuIdentificateurWIndows = CreateMenu(#Menu, WindowID(#Fenetre_principale))  
; teste que la création du menu a réussi, c'est-à-dire que createmenu retourne 0 si le menu
; n'a pas pu être crée
  If MenuIdentificateurWIndows 
  MenuTitle("Fichier")
    MenuItem(#MENU_Copier, "Copier")
    MenuItem(#MENU_Coller, "Coller")
    MenuBar()
    MenuItem(#MENU_Cocher, "Cocher le menu Copier avec l'image correspondante")
    MenuBar()
    MenuItem(#MENU_DeCocher, "Décocher le menu Copier avec l'image correspondante")
;; ------------------------------------------------------------
EndIf 
; on charge les images qui vont s'afficher à coté du menu copier en mode coché/décoché
       Resultat.l  = LoadImage(#MonImage      , "C:\Program Files\Purebasic\Forum francais\B05_Cut.bmp")
       Resultat2.l = LoadImage(#MonImageCocher, "C:\Program Files\Purebasic\Forum francais\B08_Delete.bmp")
    
         ; teste d'abord si les images ont bien été chargées
      If resultat And Resultat2
;        on récupère la taille max en X et en Y que l'on pourra afficher dans le menu
;        sur mon ordi j'avais une image max de 13 pixels par 13 pixels
;        on utilise l'API GetSystemMetrics avec le paramètre #SM_CXMENUCHECK et SM_CYMENUCHECK
;        pour y arriver
         TailleX.l = GetSystemMetrics_(#SM_CXMENUCHECK)
         TailleY.l = GetSystemMetrics_(#SM_CYMENUCHECK)
         
;        teste que les valeurs ne sont pas nulles car on va redimensionner l'image pour 
;        qu'elle ait la taille correcte
         If TailleX And TailleY   
         EndIf    
;         ici on appelle la procédure qui va cocher le menu copier {AfficheIconeMenu()]
         AfficheIconeMenu(MenuIdentificateurWIndows,#MENU_Copier,UseImage(#MonImage) ,UseImage(#MonImageCocher))
      EndIf     
EndIf
;;  Boucle d'évènement de PB
  Repeat 
     Select WaitWindowEvent()
       Case #PB_EventCloseWindow   ; teste si la croix en haut à droite a été enfoncée
         QuitterLeProg = 1          ; si oui on quitte
       Case  #PB_Event_Menu         ; on récupère les événement générés par les menus
             Select EventGadgetID()
                Case #MENU_Cocher   ; si l'utilisateur a sélectionné le menu cocher l'image ...
                                     ; alors on affiche l'image en mode coché
                SetMenuItemState(#MENU, #MENU_Copier, 1) 
                Case #MENU_DeCocher   ; si l'utilisateur a sélectionné le menu décocher l'image ...
                                      ; alors on affiche l'image en mode decoché
                SetMenuItemState(#MENU, #MENU_Copier, 0) 
             EndSelect
     EndSelect   
  Until QuitterLeProg 
End