begin process at 2012 05 29 17:28:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probléme ID de Menus


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probléme ID de Menus

mercredi 15 juin 2005 à 02:52:22 | Probléme ID de Menus

Zootella

Hello all;

Voilà, dans un programme j'utilise une fonction qui me rajoute toutes les entrées d'une liste box dans le menu da la fenetre principale.

Le probléme c'est comment savoir quel menu a été selectionné! il faut mettre un ID différent pour chaque item ajouté, par exemple :

   #define ID_MENU 3000

    for (i = 0; i < Count; i++)
    {
        SendMessage(hList, LB_GETTEXT, i, (LPARAM)Text);

        AppendMenu(hSubMenu, MF_STRING, ID_MENU + i, Nick);
    }

ID_MENU + i pour avoir un id différent à chaque fois, mais comment intercpeter ces ID_MENU dans une procédure callback ? tel est la question! Merci.

mercredi 15 juin 2005 à 09:25:48 | Re : Probléme ID de Menus

louis14

en VC++, j'utilise une de ces 2 commandes dans la message MAP:
ON_COMMAND(ID, fonction_pour_ID)
ou
ON_COMMAND_RANGE(ID1,ID2, fonction_IDS) et dans fonction_IDS il faut traiter les différents ID par un switch.
j'espère que celà va t'aider


louis14
mercredi 15 juin 2005 à 10:29:19 | Re : Probléme ID de Menus

vecchio56

Administrateur CodeS-SourceS
Je ne pense pas que ca va l'aider, visiblement il n'utilise pas les MFC. C'est donc le message WM_COMMAD qui va recevoir l'id dans LOWORD(wParam)
mercredi 15 juin 2005 à 10:46:24 | Re : Probléme ID de Menus

Zootella

Efféctivement je n'utilise pas MFC, donc id dans WM_COMMAND, LOWORD(wParam). Sinon j'ai pensé à utiliser le return de TrackPopupMenu mais c'est un menu de la fenetre, donc est-ce possible d'afficher un menu de fenetre avec TrackPopupMenu ?
mercredi 15 juin 2005 à 10:55:34 | Re : Probléme ID de Menus

vecchio56

Administrateur CodeS-SourceS
Non, ce n'est pas fait pour ca. La solution avec WM_COMMAND ne te convient pas?
mercredi 15 juin 2005 à 14:54:32 | Re : Probléme ID de Menus

Zootella

Ben si mais le nombre d'élements dans la listbox varie à chaque fois!

donc comment utiliser ça dans WM_COMMAND puisque le nombre d'ids change ?

mercredi 15 juin 2005 à 15:06:49 | Re : Probléme ID de Menus

vecchio56

Administrateur CodeS-SourceS
Ca dépend de ce que tu veux faire dans le WM_COMMAND. Si tu veux afficher un message par exemple, eh bien tu peux utiliser un tableau t pour ca. Et tu fais:
case WM_COMMAND:
  if((HMENU)(LOWORD(wParam)) == hmenu) MessageBox(0, t[LOWORD(wParam)], 0, 0);
  break;

C'est sur que comme le nombre d'ID est inconnu à la compilation, tu ne pourra pas faire de switch dans ton WM_COMMAND.
Tu veux faire quoi dans le WM_COMMAND?

mercredi 15 juin 2005 à 21:20:03 | Re : Probléme ID de Menus

Zootella

Afficher le nom du menu séléctionner.

if((HMENU)(LOWORD(wParam)) ==  hmenu :
l'ID sera toujours le même non?; Sinon j'ai esseyé avec un seul ID pour tous les menus puis dans le WM_COMMAND utiliser MenuItemFromPoint, mais ça ne marche pas.



mercredi 15 juin 2005 à 21:31:19 | Re : Probléme ID de Menus

vecchio56

Administrateur CodeS-SourceS
Je vérifie avant que le message vient bien du menu (parce que après on ne fait pas de filtrage). Ce n'est pas nécessaire si tu n'a qu'un seul menu.
Ce qui est important c'est LOWORD(wParam). Dans LOWORD(wParam) tu as l'ID, et celui ci change bien entendu

Pour afficher le nom de l'item sélectionné:

char buffer[BUFFER_SIZE];
...
case WM_COMMAND:
  GetMenuString((HMENU)LOWORD(wParam), LOWORD(wParam), buffer, BUFFER_SIZE, GetMenuString);
  break;

Comme tu le vois, on n'a pas besoin de connaitre tous les items du menu



Cette discussion est classée dans : menu, id, probléme, menus, différent


Répondre à ce message

Sujets en rapport avec ce message

Meme ID dans le Menu [ par crocejf2000 ] Dans mon menu,j'ai plusieurs item qui on le meme ID mais pas le meme label. Comment puis-je faire pour recuperer juste le label du menu ou l'utilisate Utilisation des menus. [ par JackosKing ] Voilà, je voudrais utiliser un menu avec icone normal, jusque là pas de probleme, seulement ke voudrais que le menu apparaisse avec de grosse icone (c [MFC] Griser menu déroulant [ par Atmaweapon ] J'ai deux questions (dont une qui est 'facultative' a la limite...)Je travaille dans une MFC et ai un menu déroulant (dans le Menu de mon IDR_MAINFRAM SetCheck et PopUpMenu [ par Toutoun13 ] Bonjour, Dans le code suivant j'ai un problème avec un sous menu qui n'est pas checked comme je le voudrais : #define ID_VERSION_LOGICIEL 16000 ON_UP IrrLicht & Menus [ par simtiers ] Salut ! Je cherche à créer un menu contextuel dans une démo 3D avec Irrlicht. J'ai vu qu'on pouvait faire des menus "normaux" (en haut de l'écran), m wxXmlResource pour creer un menu de signets ftp ??? [ par satellite34 ] bonjour, je développe une application client ftp, je voudrai y implémenter un menu de signets ftp;pour le moment j'ecris mes id's de connection dans u [WINDOWS] Ccomment recuperer le nom des menus de toutes les fenetres ? [ par ZaRMaS ] Bonjour, Je cherche a recuperer le nom des menus de toutes les fenetres ouvertes de windows, mais j'ai quelques problemes avec tous les Handle. voil Hook clic droit sur la titlebar [ par reptils ] Salut a tous,J'ai un p'ti probleme avec le programme que j'essaies de faire. Je voudrais faire un virtual desktop, et pour cela j'aimerais que lorsque Menus MFC [ par adrienva ] Bonjour, Mon probleme est que lorsque je crée un menu (en MFC ) , puis que j'ajoute des gestionnaires d'évenements, lors de l'éxécution, les éléments menu déroulant POPUP [ par artichaud ] hello, je découvre les joies des MFC (VC++6) au boulot (stagiaire, personne qui connait Visual, super)j'ai un popup menu IDR_MAINFRAME dans lequel il


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 6,614 sec (3)

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