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, @+
Sur certaines autres configs, les couleurs sont bonnes mais les icones sont coupées -___-
Faut que je planche sur ces bug...
@+
J'ai déjà vu un aperçu de l'éditeur héxa et on attend sa finalisation avec impatience peut-on dire !
Très beau boulot : tu fais partie des grands de VBfrance
plutot que de renvoyer le Caption du menu dans l'event, il vaudrait mieux renvoyer son "chemin". Ex:
Fichier\Nouveau\Fichier Bitmap
ca permettrait a l'utilisateur de tes classes de pouvoir traiter derrière l'info comme il le souhaites : Afficher un texte explicatif, par exemple, plutot que de dupliquer le texte du menu. En effet, RIEN ne m'empeche d'avoir trois sous menu avec le même Caption, imagine :
&Effacer
...Les ressources selectionnées
...Le projet
&Archiver
...Les ressources selectionnées
...Le projet
il sera plus adapté de placer comme texte d'aide,
"Permet d'effacer les ressources sélectionnées" plutot que de reprendre uniquement l'intitulé du menu...
pour l'interface, files moi ton adressse mail par MP, je t'envoies un exemple
Renfield : pour toutes les suggestions, je prend note et je mettrais à jour, mais j'avoue que
"clsFrmSubClassEvent pourrait être remplacé par une Interface, qui ne contiendrais que :
Public Sub OnMenuOver(ByRef strCaption As String)
ainsi tu ferais en haut de ta Form :
Implement clsFrmSubClassEvent"
me semble obscur... je vais me renseigner dessus ^^
Merci, @+
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.