_TomTom_ a écrit :
Bonjour,
ds mon projet MFC, j'utilise une boite de dialogue dans lakelle j'aimerai ajouter une barre de menus.Celle-ci est crée et s'apelle IDR_MAINFRAME.
Ma boite de dialogue s'apelle IDD_PMW_DIALOG.
J'aimerai savoir kel ligne de code dois-je insérer afin que la barre de menus apparaisse dans la dialog box.
Merci
|
Dans le .h de la boite de dialogue :
Code :
- CMenu m_hMenu;
- void UpdateMenu (CMenu* pMenu);
- afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
|
Dans le .cpp de la boite de dialogue :
dans la message map :
Code :
- ON_WM_INITMENUPOPUP()
|
dans la fonction OnInitDialog()
Code :
- m_Menu.LoadMenu(IDR_MENU);
- SetMenu(&m_Menu);
|
et enfin les 2 fonctions déclarée dans le header :
Code :
- void MyDialog::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
- {
- UpdateMenu (pPopupMenu);
- }
- void MyDialog::UpdateMenu (CMenu* pMenu)
- {
- CCmdUI cmdUI;
- if (NULL != pMenu)
- {
- for (UINT n = 0; n < pMenu->GetMenuItemCount(); ++n)
- {
- CMenu* pSubMenu = pMenu->GetSubMenu(n);
- if (NULL != pSubMenu)
- {
- UpdateMenu (pSubMenu); // recursive call
- }
- else
- {
- cmdUI.m_nIndex = n;
- cmdUI.m_nID = pMenu->GetMenuItemID(n);
- cmdUI.m_pMenu = pMenu;
- // Need to set this value otherwise you will assert when
- // you have an empty recent file list.
- cmdUI.m_nIndexMax = pMenu->GetMenuItemCount();
- cmdUI.DoUpdate(this, FALSE);
- }
- }
- }
- }
|