MENU CRÉE DYNAMIQUEMENT (SANS PASSER PAR L'ASSISTANT DE VB)

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 - 7 nov. 2004 à 22:36
xgluk Messages postés 10 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 12 mai 2006 - 11 oct. 2010 à 14:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27410-menu-cree-dynamiquement-sans-passer-par-l-assistant-de-vb

xgluk Messages postés 10 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 12 mai 2006
11 oct. 2010 à 14:39
excellent, je l'ai réutilisé pour mettre un menu contextuel sur la systray avec un contenu modifiable...
tdt63 Messages postés 38 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 30 août 2009
9 févr. 2009 à 17:12
Bonjour, très utile ce code. Une petite question : quelqu'un sait-il comment faire l'équivalent pour les menus en en-tête de la fenêtre ? Je sais qu'il faut utiliser la fonction SetMenu, mais je ne sais pas comment récupérer les clics de l'utilisateur en suite.

Merci.
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
12 déc. 2006 à 22:11
Oui, dans la structure MenuItemInfo, il faut spécifier le flag Public Const MFT_SEPARATOR = &H800

DarK Sidious
AngeliusMefyrx Messages postés 52 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 14 octobre 2007
12 déc. 2006 à 22:04
Salut,

Thanks pour le code,
Je l'ai pas encore essayer, je crée mon code en notepad et je corrigerai le reste un peu plus tard, je le teste de temps à autres chez nous, mais la j'intègre la section menu.

En passant est-ce qu'il y a un moyen d'insérer une barre entre les menus pour diférencier des sections
C'est à dire pour NotePad par exemple, il y a une barre entre dans "Édition" entre "Annuler" et "Couper"

Je me demandais aussi, quand on click sur le menu, quelle est l'options généré pour que j'y génère du code en retour...

Ce que je veux faire, c'est un menu généré directement à partir d'une base de donnée access. La base de donnée contenant à la fois le titre et la commande a executer.

Merci
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
2 nov. 2006 à 17:44
Salut, très utile ce bout de code.
Merci, @+
cs_Danyz Messages postés 98 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 octobre 2006
11 sept. 2006 à 04:42
Merci de ta reponse ;)

Au risque de passer pour un boulet, tu peux m'en dire + stp ?
Pour recuperer le handle d'un controle c'est avec .hWnd normalement ? les menu n'ont pas cette propriété...
Si tu pouvais me dire à quel endroit changer ca dans ton code ca serait top ;)
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
10 sept. 2006 à 21:50
Oui c'est possible, il suffit de récupèrer le handle du menu Pistes, et de lui rajouter des submenus.

DarK Sidious
cs_Danyz Messages postés 98 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 octobre 2006
10 sept. 2006 à 21:42
Salut, super source ;)

C'est possible de créér avec ta source un sous menu pour un menu deja existant ?

dans cette exemple : http://img113.imageshack.us/img113/9421/capture001ig4.png ,
je voudrais ajouter le listing des pistes d'un dossier dans un sous menu (ici le sous menu "Pistes")

Merci , @ ++
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
20 mai 2006 à 04:40
J'ai un doute. L'entreprise me semble quand même harsadeuse et puis pour ce type de menu, une icône à chaque item est necessaire pour une meilleur lisibilité.
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
19 mai 2006 à 17:16
Oui bien entendu que c'est possible : avec mon code, tu crée un menu avec le contenu que tu veux.

DarK Sidious
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
19 mai 2006 à 16:10
Je cherchais une source similaire (sans vraiment chercher il est vrai ^^) mais je me pose une question directement liée à l'usage que je veux en faire :

Est-il possible d'adapter ce code à un menu qui contiendrais les dossiers et fichiers d'un disk dur ?

Je sais que cela peut paraitre lourd mais pour une application, il me faut un menu de ce type (le tout etant de gerer les clicks de ces menus et la bonjour le casse tete je pense).
cs_starac Messages postés 1 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 23 décembre 2005
23 déc. 2005 à 15:24
Excusez moi je debute ne programation et je voudrais faire la meme chose mais dans Excel.
C'est a dire créer des menus, auxquels j'affecte des macro.
J'arrive pas a créer des sous-sous-menus.
si quelqu'un pouvais m'aider...
merci
cs_salazar Messages postés 241 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 février 2006 1
31 mai 2005 à 10:25
Très intéressant ! Merci pour ton travail.
Il serait utile de mettre à jour ta source, avec les différentes améliorations proposées... ;o) 10/10

Bonne continuation.
mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005
24 mars 2005 à 12:43
Merci beaucoup de ta réponse rapide,
J'viens à l'instant de trouver ce qu'il fallait enlever. Il s'agissait en fait de :
Let .hSubMenu = lHandleSousMenu(0)

Merci beaucoup en tout cas

Maïlys
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
24 mars 2005 à 12:40
Salut,

Enlève le flag MIIM_SUBMENU dans les lignes :

Let .fMask = MIIM_ID Or MIIM_TYPE Or MIIM_STATE Or MIIM_SUBMENU

Cela devrait résoudre ton problème

DarK Sidious
mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005
24 mars 2005 à 12:33
C'est absolument ce que je recherchais, à un détail près. Moi je n'ai pas besoin des "sous-sous menu". J'ai retiré les lignes de codes correspondant à la création des sous-sous menu, mais j'ai toujours les flèches au bout du menu. Je ne trouve pas ce que je dois modifier pour enlever ses flèches. Une idée ?
Merci d'avance
Maïlys
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 févr. 2005 à 13:29
Si la fenêtre dont tu veux modifier les menus n'est pas dans ton processus, la chose est un peu plus complexe, exemple ici:
AJOUTER UN MENU A NOTEPAD (WIN32)
http://www.cppfrance.com/code.aspx?ID=28181
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
8 févr. 2005 à 13:16
Salut, est-ce qu'il existe une maniere de lier le menu à une procedure, pour que celle ci s'execute lorsque tu clique sur le menu ? Tu utilise la fonction Form_Click, Ok, mais si on faisait un nouveau menu dans un formulaire qui n'appartient pas au prog (par exemple si je veux que mon prog ajoute un nouveau menu dans Word), comment le prog peut savoir que le menu a été cliqué ?
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
17 déc. 2004 à 16:50
Et bien en fait, j'avais développé cette source pour un programme bien plus important, et je n'avais pas besoin de fonctions pour créer les menus : les menus étant statiques, mais contenant énormément de sous-menus dynamiques dont le contenus était connus à la compilation.

Pour définir la position dans le menu, il suffit de modifier le deuxième paramètre de la fonction InsertMenuItem :

Call InsertMenuItem(lHandleSousMenu(0), 0, True, pMenuInfo) 'positionne le menu à la position 0
Call InsertMenuItem(lHandleSousMenu(0), 1, True, pMenuInfo) 'positionne le menu à la position 1
' etc.

Par contre, pour ce que tu veux faire, il te faut utiliser une autre API : SetMenu pour définir les menus à rattacher à la feuille.

DarK Sidious

DarK Sidious
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
17 déc. 2004 à 16:24
Super, c'est exactement ce que je cherchais :)
Dommage que tu n'ai pas pensé à programmer une fonction pour automatiser la création de menus...
Au fait, tu pourais expliquer comment on définit la position du menu ?
Par exemple j'ai ce menu :

Fichier
.Nouveau
.Ouvrir
.Quitter
Configuration
.Police
.CouleurTexte
.CouleurFond
Aide
.About
.Informations
..Auteur
..Logiciel

Comment je fais pour le créer dynamiquement ? (sachant que la forme du menu peut être modifiée par l'utilisateur)

Merci :)
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
7 nov. 2004 à 22:36
code tres interressant pour l'utilisation des API de gestion des menus et aussi pour l'idée, car il y a peut j'ai eu besoin d'un menu vraiment dynamique je m'en suis sortie avec le menu VB a une entrée principal vide et des sous menus dynamique mais ce n'est pas propre.

ta solution est excellente je pense l'utiliser.
merci 10/10