Ajouter des icones dans les menus + comment subclasser les menus d'une form (ou mdiform)

Description

Salut, ce code va vous permettre deux choses :
-de mettre des icones (16x16) dans les menus d'une form, d'une MDIform ou d'un popupmenu
-de subclasser les menus d'une form, d'un popup ou d'une MDIform (pour savoir qu'est ce que le subclassing, il existe des tutos sur vbfrance, rechercher "subclassing" ou "subclasser"). Application du subclassing dans cette source : affiche le caption du menu survolé.

Voilà, c'est TRES TRES commenté, et normalement pas de bugs vus.

TRES PEU de lignes à ajouter dans le code pour ajouter des icones ou permettre de subclasser.

Les icones sont à ajouter dans un ImageList (dans Microsoft Windows Common Controls 6.0).
Pour associer une icone à un menu, il faut mettre le "key" d'une image dans le ImageList de cette form : "Fichier|Nouveau" (dans cet exemple, ou associera l'icone au menu "Nouveau"). Les "&" sont à rajouter si présents, tout comme les raccourcis (je crois).

PRENEZ exemple sur les 2 forms qui sont subclassées pour l'implémentation dans votre programme.

Source / Exemple :


'voilà ce qu'il faut ajouter dans une form pour le subclassing :

Public WithEvents cSubEvent As clsFrmSubClassEvent

Private Sub Form_Load()
    
    'instancie les classes
    Set cSub = New clsFrmSubClass
    Set cSubEvent = New clsFrmSubClassEvent
    
    'démarre le hook de la form
    Call cSub.HookFormMenu(Me.hWnd, cSubEvent, CBool(Check1.Value))
End Sub

Private Sub Form_Unload(Cancel As Integer)
    'enlève le hook de la form
    Call cSub.UnHookFormMenu(Me.hWnd)
    Set cSubEvent = Nothing
    'Set cSub = Nothing  !!!!! NE METTRE QUE SI L'ON QUITTE LE PROGRAMME
End Sub

Il ne faut faire cSub=Nothing que lors de la fermeture du programme (car cette classe est utilisée pour toutes les forms que vous subclasser, donc ne désinstancier que quand plus de form affichée, c'est à dire quand vous quittez)

Conclusion :


Voilà, notez SVP, et commentez aussi !!

Merci, @+

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.