vow
Messages postés54Date d'inscriptionmardi 18 septembre 2001StatutMembreDernière intervention27 juillet 2005
-
3 janv. 2003 à 10:09
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 2004
-
3 janv. 2003 à 15:45
Bonjour,
J'ai créé un menu PRSARCH avec 6 items dont les IDs sont : IDM_A, IDM_B, IDM_C, IDM_D, IDM_E, IDM_F.
Selon les cas dans mon code, j'aimerais supprimer deux d'entre eux : IDM_C et IDM_E par exemple.
Comment faire pour supprimer ces entrées (ou les rendre invisible) en passant par l'ID, et non par la "position" (int) de celles-ci :
RemoveMenu (GetSubMenu(hWndMenu, iMenu), 3, MF_BYPOSITION);
RemoveMenu (GetSubMenu(hWndMenu, iMenu), 5, MF_BYPOSITION);
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 3 janv. 2003 à 12:31
Alors la , dites moi si je me trompe mais
ceci me semble INSOLUBLE
autant il est possible grâce à la fonction GetDlgItem de récupérer le contrôle enfant d'une boite de dialogue par son ID
autant il n'est pas possible de faire de même pour un item de menu.
La raison est que plusieurs objets peuvent être chargés sur le même identifiant (menu déroulant, menu popup, item de toolbar)
vow
Messages postés54Date d'inscriptionmardi 18 septembre 2001StatutMembreDernière intervention27 juillet 2005 3 janv. 2003 à 13:15
J'ai trouvé la solution :
RemoveMenu (GetSubMenu(hWndMenu, iMenu), IDM_C, MF_BYCOMMAND);
RemoveMenu (GetSubMenu(hWndMenu, iMenu), IDM_E, MF_BYCOMMAND);
En fait, je pensais que les IDs étaient des chaines de caractères (je ne sais pourquoi), mais il s'agit de nombres entiers en fait.
Merci quand même.
@++
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 3 janv. 2003 à 15:45
tu as raison,
bien qu'il n'y ait pas de fonction globale au niveau de la fenêtre, lorsque le menu est connu, l'item peut être identifié
cela donne donc , en s'adressant à la fenêtre porteuse du menu (la CMainFrame par défaut) :
CMenu* p = GetMenu();
p->RemoveMenu(ID_MONMENU, MF_BYCOMMAND );