Voilà comment je gère dans PureIconManager, 2 procédures dédiées pour les Bind...
Code : Tout sélectionner
Procedure PIM_Set_BindEvent()
CompilerIf #Nom_Procedure = #True
Debug #PB_Compiler_Procedure
CompilerEndIf
;- #PB_Event_SizeWindow de redimensionnement de la fenêtre principale
BindEvent(#PB_Event_SizeWindow, @OnSizeWindow(), #MainWindow)
;///*************************************************
;// Les boutons de la ToolBar principale
;- #Button_Ouvrir_Dossier_Preferences
BindEvent(#PB_Event_Gadget, @OnOpenPreferencesFolder(), #Fenetre_preferences, #Button_Ouvrir_Dossier_Preferences)
;- #Bouton_Conversion
BindEvent(#PB_Event_Menu, @PIM_BatchConversion(), #MainWindow, #Bouton_Conversion)
;- #Bouton_folder_explorer
BindEvent(#PB_Event_Menu, @PIM_Ouvrir_Fichier_Par_Bouton(), #MainWindow, #Bouton_folder_explorer)
;- #Bouton_Credits
BindEvent(#PB_Event_Menu, @PIM_Credits(), #MainWindow, #Bouton_Credits)
;- #Bouton_Apropos
BindEvent(#PB_Event_Menu, @PIM_A_Propos_De(), #MainWindow, #Bouton_Apropos)
;- #Bouton_Supprimer
BindEvent(#PB_Event_Menu, @OnDelete(), #MainWindow, #Bouton_Supprimer)
;- #Bouton_Aide
BindEvent(#PB_Event_Menu, @OnHelp(), #MainWindow, #Bouton_Aide)
;- #Bouton_Quit
BindEvent(#PB_Event_Menu, @OnQuit(), #MainWindow, #Bouton_Quit)
;///*************************************************
;// Les boutons de la Rebar en dessous Toolbar
BindEvent(#PB_Event_Menu, @OnCopyToClipBoard(), #MainWindow, #Button_Copy_To_ClipBoard)
BindEvent(#PB_Event_Menu, @OnPasteFromClipBoard(), #MainWindow, #Button_Paste_From_ClipBoard)
BindEvent(#PB_Event_Menu, @OnChangeExplorerListDisplayMode(), #MainWindow, #Button_ChangeExplorerList_Display)
BindEvent(#PB_Event_Menu, @OnChangeLanguage(), #MainWindow, #ButtonChangeLanguage)
;///*************************************************
;// Les boutons de la Rebar container images
BindEvent(#PB_Event_Menu, @OnBouton_PbGetColor(), #MainWindow, #Button_PbGetColor)
BindEvent(#PB_Event_Menu, @OnBouton_EncadrerImage(), #MainWindow, #Button_EncadrerImage)
;///*************************************************
;// Les Raccourcis clavier
;- #Touche_DELETE
;// ne marche pas avec BindMenuEvent car menu déjà subclassés
BindEvent(#PB_Event_Menu, @OnDelete(), #MainWindow, #Touche_DELETE)
; ;- #Touche_Escape
; BindEvent(#PB_Event_Menu, @OnEscape(), #MainWindow, #Touche_Escape)
;- #Touche_CTRL_T
BindEvent(#PB_Event_Menu, @On_CTRL_T(), #MainWindow, #Touche_CTRL_T)
;- #Touche_CTRL_A
BindEvent(#PB_Event_Menu, @On_CTRL_A(), #MainWindow, #Touche_CTRL_A)
; ;// *****************************************************
; ;// PopupMenu des boutons de la toolbar
BindEvent(#PB_Event_Menu, @OnOpenPreferences(), #MainWindow, #PopupImageMenu_ouvrir_Fenetre_Preferences)
BindEvent(#PB_Event_Menu, @OnOpenPreferencesFolder(), #MainWindow, #PopupImageMenu_ouvrir_Dossier_Preferences)
BindEvent(#PB_Event_Menu, @OnAddItemToFavoris(), #MainWindow, #PopupImageMenu_Ajouter_fichier_aux_favoris)
BindEvent(#PB_Event_Menu, @OnAddFolderToFavoris(), #MainWindow, #PopupImageMenu_Ajouter_dossier_aux_favoris)
BindEvent(#PB_Event_Menu, @PIM_Gerer_favoris(), #MainWindow, #PopupImageMenu_Gerer_favoris)
; ;// *****************************************************
; ;// PopupMenu des boutons de la Rebar en dessous Toolbar
BindEvent(#PB_Event_Menu, @OnSetExplorerListDisplayMode_Details(), #MainWindow, #PopupImageMenu_ExplorerListDisplayMode_Details)
BindEvent(#PB_Event_Menu, @OnSetExplorerListDisplayMode_SmallIcons(), #MainWindow, #PopupImageMenu_ExplorerListDisplayMode_SmallIcons)
BindEvent(#PB_Event_Menu, @OnSetExplorerListDisplayMode_Medium(), #MainWindow, #PopupImageMenu_ExplorerListDisplayMode_Medium)
BindEvent(#PB_Event_Menu, @OnSetEnglishLanguage(), #MainWindow, #PopupImageMenu_Display_Drapeau_Anglais)
BindEvent(#PB_Event_Menu, @OnSetFrenchLanguage(), #MainWindow, #PopupImageMenu_Display_Drapeau_Francais)
;// *****************************************************
;// Les PopupMenus clic droit ou gauche sur un élément de l'ExplorerList
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_To_Ico_File_KeepCompression(), #MainWindow, #PopupImageMenu_ExplorerListConversion_To_Ico_File_KeepCompression)
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_To_Ico_File_Uncompress(), #MainWindow, #PopupImageMenu_ExplorerListConversion_To_Ico_File_Uncompress)
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_To_Icl_NE_File_KeepCompression(), #MainWindow, #PopupImageMenu_ExplorerListConversion_To_Icl_NE_File_KeepCompression)
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_To_Icl_NE_File_Uncompress(), #MainWindow, #PopupImageMenu_ExplorerListConversion_To_Icl_NE_File_Uncompress)
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_To_Icl_PE_File_KeepCompression(), #MainWindow, #PopupImageMenu_ExplorerListConversion_To_Icl_PE_File_KeepCompression)
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_To_Icl_PE_File_Uncompress(), #MainWindow, #PopupImageMenu_ExplorerListConversion_To_Icl_PE_File_Uncompress)
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_To_dll_PE_File_KeepCompression(), #MainWindow, #PopupImageMenu_ExplorerListConversion_To_dll_PE_File_KeepCompression)
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_To_dll_PE_File_Uncompress(), #MainWindow, #PopupImageMenu_ExplorerListConversion_To_dll_PE_File_Uncompress)
BindEvent(#PB_Event_Menu, @OnExplorerListConversion_Remove_File(), #MainWindow, #PopupImageMenu_ExplorerListConversion_Remove_File)
;// *****************************************************
;// Les PopupMenus clic droit ou gauche sur un élément de la listeIcone des groupes
BindEvent(#PB_Event_Menu, @OnSupprimer_Selection_ListIcon_Group_icons(), #MainWindow, #Supprimer_selection_ListIcon_Group_icons)
BindEvent(#PB_Event_Menu, @OnSupprimer_Selection_ListIcon_Group_icons(), #MainWindow, #Supprimer_selection_ListIcon_Group_icons_autres_Que_ICO)
BindEvent(#PB_Event_Menu, @OnSelectionner_Tout_ListIcon_Group_Icons_Autres_Que_ICO(), #MainWindow, #Selectionner_tout_ListIcon_Group_icons_Autres_Que_ICO)
BindEvent(#PB_Event_Menu, @OnTout_Deselectionner_ListIcon_Group_Icons_Autres_Que_ICO(), #MainWindow, #Tout_deselectionner_ListIcon_Group_icons_Autres_Que_ICO)
BindEvent(#PB_Event_Menu, @OnInverser_La_selection_ListIcon_Group_Icons_Autres_Que_ICO(), #MainWindow, #Inverser_la_selection_ListIcon_Group_icons_Autres_Que_ICO)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_ico_ListIcon_Group_icons_Autres_Que_ICO_KeepCompression(), #MainWindow, #Popup_Enregistrer_au_format_ico_ListIcon_Group_icons_Autres_Que_ICO_KeepCompression)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_ico_ListIcon_Group_icons_Autres_Que_ICO_Uncompress(), #MainWindow, #Popup_Enregistrer_au_format_ico_ListIcon_Group_icons_Autres_Que_ICO_Uncompress)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_ico_compression_Vista_ListIcon_Group_icons(), #MainWindow, #Enregistrer_au_format_ico_compression_Vista_ListIcon_Group_icons)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_ico_decompression_Vista_ListIcon_Group_icons(), #MainWindow, #Enregistrer_au_format_ico_decompression_Vista_ListIcon_Group_icons)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_icl_PE_ListIcon_Group_icons_Autres_Que_ICO_KeepCompression(), #MainWindow, #Popup_Enregistrer_au_format_icl_PE_ListIcon_Group_icons_Autres_Que_ICO_KeepCompression)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_icl_PE_ListIcon_Group_icons_Autres_Que_ICO_Uncompress(), #MainWindow, #Popup_Enregistrer_au_format_icl_PE_ListIcon_Group_icons_Autres_Que_ICO_Uncompress)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_icl_compression_Vista_PE_ListIcon_Group_icons(), #MainWindow, #Enregistrer_au_format_icl_compression_Vista_PE_ListIcon_Group_icons)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_icl_decompression_Vista_PE_ListIcon_Group_icons(), #MainWindow, #Enregistrer_au_format_icl_decompression_Vista_PE_ListIcon_Group_icons)
BindEvent(#PB_Event_Menu, @OnPopup_Enregistrer_au_format_dll_PE_ListIcon_Group_icons_Autres_Que_ICO_KeepCompression(), #MainWindow, #Popup_Enregistrer_au_format_dll_PE_ListIcon_Group_icons_Autres_Que_ICO_KeepCompression)
BindEvent(#PB_Event_Menu, @OnPopup_Enregistrer_au_format_dll_PE_ListIcon_Group_icons_Autres_Que_ICO_Uncompress(), #MainWindow, #Popup_Enregistrer_au_format_dll_PE_ListIcon_Group_icons_Autres_Que_ICO_Uncompress)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_dll_compression_Vista_ListIcon_Group_icons(), #MainWindow, #Enregistrer_au_format_dll_compression_Vista_ListIcon_Group_icons)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_dll_decompression_Vista_ListIcon_Group_icons(), #MainWindow, #Enregistrer_au_format_dll_decompression_Vista_ListIcon_Group_icons)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_icl_compression_Vista_NE_ListIcon_Group_icons(), #MainWindow, #Popup_Enregistrer_au_format_icl_NE_ListIcon_Group_icons_Autres_Que_ICO_KeepCompression)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_icl_decompression_Vista_NE_ListIcon_Group_icons(), #MainWindow, #Popup_Enregistrer_au_format_icl_NE_ListIcon_Group_icons_Autres_Que_ICO_Uncompress)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_icl_compression_Vista_NE_ListIcon_Group_icons(), #MainWindow, #Enregistrer_au_format_icl_compression_Vista_NE_ListIcon_Group_icons)
BindEvent(#PB_Event_Menu, @OnEnregistrer_au_format_icl_decompression_Vista_NE_ListIcon_Group_icons(), #MainWindow, #Enregistrer_au_format_icl_decompression_Vista_NE_ListIcon_Group_icons)
;// *****************************************************
;// Les PopupMenus clic droit ou gauche sur un élément du Scrollarea des icones
BindEvent(#PB_Event_Menu, @OnSupprimer_Selection_ScrollArea_Icons(), #MainWindow, #Supprimer_selection_ScrollArea_Icons)
BindEvent(#PB_Event_Menu, @OnSelectionner_Tout_ScrollArea_Icons_Autres_Que_ICO(), #MainWindow, #Selectionner_tout_ScrollArea_icons_Autres_Que_ICO)
BindEvent(#PB_Event_Menu, @OnTout_Deselectionner_ScrollArea_Icons_Autres_Que_ICO(), #MainWindow, #Tout_deselectionner_ScrollArea_icons_Autres_Que_ICO)
BindEvent(#PB_Event_Menu, @PIM_Inverser_tout_ScrollArea_icons(), #MainWindow, #Inverser_la_selection_ScrollArea_icons_Autres_Que_ICO)
;// *****************************************************
;// Les gadgets fenêtre notification --> conversion
BindEvent(#PB_Event_Gadget, @OnBatchButton_Ok(), #Fenetre_Conversion_Notification, #Batch_Button_Ok)
BindEvent(#PB_Event_Menu, @OnEvenementFinLecturePreferences(), #MainWindow, #EvenementFinLecturePreferences)
EndProcedure
Procedure SetBindEvent_ImageGadgetScrollAreaIcon(StaticID_ImageGadget)
CompilerIf #Nom_Procedure = #True
Debug #PB_Compiler_Procedure
CompilerEndIf
;// Les gadgets fenêtre principale
;// StaticID_ImageGadget est l'identifiant statique de l'imageGadget
BindGadgetEvent(StaticID_ImageGadget, @OnScrollAreaIcons_ImageGadget())
EndProcedure
J'ai aussi ce code pour créer des BindMenuEvent sur des menus dynamiques que j'utilise après lecture des préférences qui mémorise les éléments du menu qui peut évoluer.