Bonsoir,
J'ai une appli en Dialog avec un menu,
et j'aimerai rajouter dynamiquement des items
à mon menu,
comment dois je m'y prendre ?
merci
Bonsoir,
J'ai une appli en Dialog avec un menu,
et j'aimerai rajouter dynamiquement des items
à mon menu,
comment dois je m'y prendre ?
merci
re,
peut faire l'affaire apres recuperation du pointeur sur le menu (cf ton autre post).CMenu::AppendMenu
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );
![]()
Merci bien Farscape !
You're my god !!!
par contre pour que le clic dessus lance une fonction,
c'est vers ou que je dois le preciser ?
[edit]
tiens, c'est bizard ca(pourne pas changer)
Ce code fonctionne bien, je change bien l'affichage de mon menu,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CMenu *pMenu = GetMenu(), *pContMenu = pMenu->GetSubMenu(0); // MENU pMenu->ModifyMenu(0, MF_BYPOSITION, 0, _T("MenuXYZ")); // Contenu du Menu pContMenu->ModifyMenu(0, MF_BYPOSITION, 0, _T("champ 1")); pContMenu->ModifyMenu(1, MF_BYPOSITION, 0, _T("champ 2"));
par contre je pensais que cela rajouterai un sous menu à mon premier champ et il n'en ai rien !! il le rajoute en dessous de champ 2
pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part pContMenu->AppendMenu(MF_STRING, NULL, "test alpha");
alors que
rajoute bien un menu à coté de MenuXYZ
Code : Sélectionner tout - Visualiser dans une fenêtre à part pMenu->AppendMenu(MF_STRING, NULL, "test alpha");
re,
AppendMenu ça rajoute a la fin (comme son nom l'indique) .
dans le cas d'un sous menu derriere la derniere item.
si le pointeur est le menu racine en dernier sur la racine...
si tu veux inserer a un emplacement spécifique il faudra utiliser :
ou pour un menu:CMenu::InsertMenuItem
BOOL InsertMenuItem(
UINT uItem,
LPMENUITEMINFO lpMenuItemInfo,
BOOL fByPos = FALSE
);
pour la reponse à ces items il faut indiquer un identifiant de commande :CMenu::InsertMenu
BOOL InsertMenu(
UINT nPosition,
UINT nFlags,
UINT_PTR nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL
);
BOOL InsertMenu(
UINT nPosition,
UINT nFlags,
UINT_PTR nIDNewItem,
const CBitmap* pBmp
);
exemple:
ou ID_TESTALPHA est la commande du menu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pContMenu->AppendMenu(MF_STRING,ID_TESTALPHA, "test alpha");
apres pour traiter des commandes de menus dynamiques:
il suffira de définir une plage dynamique de commandes menu.
exemple de réponse sur la mainframe:
la ligne ON_COMMAND_RANGE est a rajouter manuellement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code ! ON_WM_CREATE() //}}AFX_MSG_MAP ON_COMMAND_RANGE(ID_CMDMENU1,ID_CMDMENU100,OnItemRange) END_MESSAGE_MAP() void CMainFrame::OnItemRange(UINT nID) { CString msg; msg.Format("CMainFrame::OnItemRange, nID = %d",nID); AfxMessageBox(msg); }
ID_CMDMENU1 est un define
les identifiants sont consecutifs et tu recois donc la notification dans une seule fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #define ID_CMDMENU1 32000 #define ID_CMDMENU2 32001 //............ #define ID_CMDMENU100 32100
![]()
lol, j'ai vraiment du mal avec les menus !!
j'ai ce menu :
[Menu]
-Items1
-Items2
-Items3
je voudrais dynamiquement rajouter a item1 un sous menu
[Menu]
-Items1
->SSItem1
->SSItem2
->SSItem3
-Items2
-Items3
j'ai beau tenter, pas moyen
quoi que je modifie, mon sous items 1 se met dans le menu principal en fonction de sa position : dans mon ex, ca donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CMenu *pMenu = GetMenu(), *pContMenu = pMenu->GetSubMenu(0); MENUITEMINFO mii; mii.cbSize = sizeof(MENUITEMINFO); mii.fMask = MIIM_TYPE; mii.fType = MFT_STRING; mii.dwTypeData = (LPTSTR)"SSItems1"; pContMenu->InsertMenuItem(1, &mii, true);
[Menu]
-Items1
-SSItem1
-Items2
-Items3
jme bat !
je comprend vraiment pas !
si manuellement, je crée un menu tel que :
[Menu]
-Item1
-SSitem1
-Item2
-Item3
et que je met ce code :
j'obtiens bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part pMenu->GetSubMenu(0)->GetSubMenu(0)->InsertMenuItem(1, &mii, true);
[Menu]
-Item1
-SSitem1
-SSitem2
-Item2
-Item3
par contre, si je ne crée pas à l'origine ce sous items, et que j'ai
[Menu]
-Item1
-Item2
-Item3
le code precedent plante, logique
par contre si je veux rajouter un sous menu avant, ca plante aussi
et ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part pMenu->GetSubMenu(0)->GetSubMenu(0)->AppendMenu(MF_STRING, NULL, "test alpha");donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part pMenu->GetSubMenu(0)->AppendMenu(MF_STRING, NULL, "test alpha");
[Menu]
-Item1
-Item2
-Item3
-test alpha
please help !![]()
tans pis, je jettes l'éponge....
merci encore pour le reste
salut,
c'est mal ! ,
il faut reprendre calmement ,je n'ai pas eu trop le temps de regarder .
![]()
Slt Farscape,
lol
bah, finalement, j'ai opté pour un Sous menu pré-concu avec un item :
[Menu]
- Langue
-Défaut
et la je rempli a partir du pointeur de Defaut
c'est ok![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager