Bonjour a tous,
voilà mon problème : j'affiche un menu contextuel lors d'un clic droit sur une liste quelconque. Ce composant graphique hérite d'une classe mère.
Dans la classe fille je construis le menu contextuel avec un item qui s'affiche correctement. A là construction du menu contextuel, j'appelle une méthode de la classe mère qui ajoute un item au menu. Seulement cet item ne s'affiche pas
voici le code de la création du menu contextuel dans la classe fille :
et celui de l'ajout de l'item dans la classe mère
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
18
19
20
21
22
23
24
25 int TrackListCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (ItlObCheckListCtrl::OnCreate(lpCreateStruct) == -1) return -1; SetContextMenu(IDR_OBLISTCTRL); ItlObListCtrl::SetRandomFlag(true); return 0; } void TrackListCtrl::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu menu; if (menu.LoadMenu(IDR_OBLISTCTRL)) { CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); //pPopup->EnableMenuItem(IDM_RANDOM_VALUE,MF_ENABLED); pPopup->EnableMenuItem(IDM_APPLY_TO_SEL,MF_GRAYED); pPopup->EnableMenuItem(ID_RANDOMIZE_ALL,MF_ENABLED); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x, point.y,pWnd); } }
Voilà, j'ai essayé de faire d'après pas mal d'exemple mais là je bloque vraiment.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31 void ItlObListCtrl::SetRandomFlag(bool isRandom) { //m_bRandomizeFlag = isRandom; EnableRandomizeAllItems(isRandom); } void ItlObListCtrl::EnableRandomizeAllItems(bool bEnable) { TRACE("Enable RANDOMIZE"); if (bEnable) { // add command to context menu CMenu* pMenu = GetContextMenu(); if (!pMenu) { // create it m_pMenu = new CMenu(); m_pMenu->CreateMenu(); CMenu popup; popup.CreatePopupMenu(); m_pMenu->AppendMenu(MF_POPUP, (UINT)popup.Detach()); pMenu = GetContextMenu(); } else { pMenu->AppendMenu(MF_SEPARATOR); } CString sMenu; sMenu.Format(sRandomizeAllMenuString, ""); pMenu->AppendMenu(MF_STRING | MF_ENABLED, ID_RANDOMIZE_ALL, sMenu); } }
Merci.
Jean
Partager