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

Soyez le premier à donner votre avis sur cette source.

Vue 10 432 fois - Téléchargée 2 465 fois

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

Ajouter un commentaire

Commentaires

violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
Salut, oui c'est sans doutes le cas (notemment ton thème de XP).

Sur certaines autres configs, les couleurs sont bonnes mais les icones sont coupées -___-

Faut que je planche sur ces bug...
@+
vicosta
Messages postés
182
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
30 novembre 2011
-
très bon code mais... bizarre: sous xp je n'arrive pas en avoir une interface comme celle de la capture postée, les icônes des menus sont fades. Peut être que ce problème est du à ma config xp
cs_Galain
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6 -
Salut Violent_Ken
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
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
si on ajoute des raccourcis (&) dans le caption des menus, ceux-ci sont affichés dans la barre d'etat.

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
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
"Rien à voir avec ta source mais VB6 sous Vista ça commence à faire bizarre :P" ==> lol oui ;) Mais bon, y tourne encore bien ^^


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.