begin process at 2012 02 17 09:04:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > AJOUTER DES ICONES DANS LES MENUS + COMMENT SUBCLASSER LES MENUS D'UNE FORM (OU MDIFORM)

AJOUTER DES ICONES DANS LES MENUS + COMMENT SUBCLASSER LES MENUS D'UNE FORM (OU MDIFORM)


 Information sur la source

Note :
9 / 10 - par 4 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaire Classé sous :subclasser, subclassing, menu, icones, menus Niveau :Initié Date de création :21/02/2007 Vu / téléchargé :8 958 / 2 184

Auteur : violent_ken

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
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

  • '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)
'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, @+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) UTILITAIRE DE SANITIZATION DES DISQUES DURS/FICHIERS (SUPPRE...
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLE SHUTDOWN SCHEDULER : ARRÊTS PLANIFIÉS (LOCAL OU REMOT...
Source avec Zip Source .NET (Dotnet) COMMENT DÉMARRER UN PROCESSUS SUR PC DISTANT DE MANIÈRE CACH...
Source avec Zip Source avec une capture Source .NET (Dotnet) YET ANOTHER (REMOTE) PROCESS MONITOR
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT DÉTECTER LES PROCESSUS CACHÉS (VIRUS, ROOTKITS...) +...

 Sources de la même categorie

Source avec Zip GEST COTISATION - ASSOCIATION par MOHA555
Source avec Zip HSCROLLBAR POUR L'ARRIÈRE PLAN par 320C
Source avec Zip Source avec une capture Source .NET (Dotnet) METTRE VOTRE FORM VB.NET EN PLEINE ÉCRAN par Gabilach
RECHERCHE DANS UNE LISTE À PARTIR D'UN CHAMP TEXTE par jmeunier
Source avec Zip GESTION DES COMSOMMABLE par gboraud

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) DEMO SUBCLASING VB.NET par Iznogood1
Source avec Zip Source avec une capture Source .NET (Dotnet) AJOUTER OU SUPPRIMER MENU CONTEXTUEL D'APPLICATION PAR CLIC ... par Le Pivert
Source avec Zip Source avec une capture IPADDRESS CLASS par mOrfiUs
Source avec Zip Source avec une capture EXEMPLE D'UN HOOK TRANSPOSÉ VERS DU SUBCLASSING par Philippe734
Source avec Zip Source .NET (Dotnet) AJOUTER DES ITEMS DANS LE MENU SYSTÈME ET AJOUTER UN ITEM AL... par ShareVB

Commentaires et avis

Commentaire de MadM@tt le 22/02/2007 00:32:33

Sortir du subclassing pour des icones dans un menu, on peut dire que tu hésite pas à faire complet !
J'imagine que c'est toujours l'éditeur héxa, j'attends vraiment de voir ton ptit chef d'oeuvre ça risque d'etre vraiment bien.

Commentaire de violent_ken le 22/02/2007 10:22:26

Héhé ;) Effectivement c'est toujours l'éditeur hexa, en cours de construction ^^
Renfield m'avait conseillé de faire apparaitre les captions des menus dans la statusbar car mes menus n'étaient pas tous très clairs, donc j'ai fait un peu de subclassing...

Et comme rajouter des icones était simple, j'ai ajouté çà aussi ^^

Merci, @+

Commentaire de Pym Corp le 22/02/2007 10:28:38

Rien à voir avec ta source mais VB6 sous Vista ça commence à faire bizarre :P
(Et oui ça a déjà 9 ans tout ça)

Commentaire de Renfield le 22/02/2007 10:51:14 administrateur CS

sympa...

pourquoi faire AddIconsToMenus et AddIconsToMenusMDI ?? elles sont identiques...
(mettre Frm en As Object), et tester le TypeOf (ou TypeName) et faire un Err.Raise si souci...

tes APIs sont déclarées en doublons, dans différents modules
(GetMenu & co)

"Public Property Get GetOverCaption() As String"
renommes la en OverCaption... GetXxxxxxx ca va pour des function, mais pour des properties....

Pourquoi IsAMenuSelected renvoie un Long (1 ou 0) au lieu de :
Un boolean... ou de l'indice de l'element séléctionné...(-1 si rien)

Appelle UnHookFormMenu dans le clsFrmSubClass.Terminate
+ test pour savoir si le subclassing est encore en route

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

et our lancer le hook :

Call cSub.HookFormMenu(Me.hWnd, Me, CBool(Check1.Value))
(voire même Call cSub.HookFormMenu(Me, CBool(Check1.Value), en extrayant le hWnd dans HookFormMenu)

enlèves le
Debug.Print uMsg & "  " & wParam & "  " & lParam
dans MaWndProc, le Select case peut laisser sa place a un If Then Else, je pense ^^

Commentaire de violent_ken le 22/02/2007 11:48:18

"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, @+

Commentaire de Renfield le 22/02/2007 13:04:04 administrateur CS

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

Commentaire de Galain le 24/02/2007 09:55:39

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

Commentaire de vicosta le 12/05/2007 16:50:16

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

Commentaire de violent_ken le 12/05/2007 16:56:11

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...
@+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

dans les menus... [ par fabiin ] Bonjour !je sais ajouter un index a un menu de la façon suivante : Load menu(index)mais je c pas l'enlever !!!! comment faut faire ????;-)merci pas av Barre de menu et Access [ par anspauldou ] Salutje voudrai un code en VB6 qui me permettra de faire une barre de menu general dont la liste des menus et sous menu proviennent des enregistrement Menus popup dans un MDIChild [ par Sandro ] Hello... je vais essayer de faire court :-)J'ai un p'ti soft MDI. Dans une feuille Child, je veux faire apparaître un menu Popup. J'y ajoute donc un m A propos des menus [ par Mikkael ] Slt,J'essaie de réaliser un programme qui me permettrer, à l'aide d'un label, d'obtenir des infos supplémentaires lorsqu'on pointe la souris dans un s Comment ajouter des menus ! [ par Tekv3 ] Comment faire pour ajouter ds mon programme des sous menu a mon menu deja existant !?? Y a til une commande pour ajouter et retirer des menu ?Merci ! menus et barre d'état [ par nono14 ] j'ai créé une barre de menu avec le createur de menu.J'aimerais afficher un commentaire dans la barre d'état en fonction du menu selectionné.Comment d icones dans menu [ par guillaume ] comment ajouter une icone dans un menu? Icones dans les menus [ par Amstel ] Je recherche un OCX permettant d'insérer des icones dans les menus.Jusqu'à présent, j'utilisais le controle IconMenu de chez ZoneCorp mais le passage Création de menu [ par rico95 ] Comment créer des menus ( ainsi que les ss-menus) dynamiquement dans une form ? icones dans les sous-menu [ par tunmsk ] salut tout le monde qqn peut il m'aider pourque je puisse inserer des icones dans les sous menu (exemple après deroulement du menu Edition je trouve u


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales