Ajout d'une barre de menu dans une boite de dialogue

Ajout d'une barre de menu dans une boite de dialogue - C++ - Programmation

Marsh Posté le 21-06-2005 à 10:52:36    

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

Reply

Marsh Posté le 21-06-2005 à 10:52:36   

Reply

Marsh Posté le 21-06-2005 à 11:10:26    

_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 :
  1. CMenu m_hMenu;
  2. void UpdateMenu (CMenu* pMenu);
  3. afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);


 
Dans le .cpp de la boite de dialogue :
 
dans la message map :  
 

Code :
  1. ON_WM_INITMENUPOPUP()


 
dans la fonction OnInitDialog()  

Code :
  1. m_Menu.LoadMenu(IDR_MENU);
  2. SetMenu(&m_Menu);


 
et enfin les 2 fonctions déclarée dans le header :  

Code :
  1. void MyDialog::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
  2. {
  3. UpdateMenu (pPopupMenu);
  4. }
  5. void MyDialog::UpdateMenu (CMenu* pMenu)
  6. {
  7. CCmdUI cmdUI;
  8. if (NULL != pMenu)
  9. {
  10.  for (UINT n = 0; n < pMenu->GetMenuItemCount(); ++n)
  11.  {
  12.   CMenu* pSubMenu = pMenu->GetSubMenu(n);
  13.   if (NULL != pSubMenu)
  14.   {
  15.    UpdateMenu (pSubMenu);  // recursive call
  16.   }
  17.   else
  18.   {
  19.    cmdUI.m_nIndex = n;
  20.    cmdUI.m_nID = pMenu->GetMenuItemID(n);
  21.    cmdUI.m_pMenu = pMenu;
  22.    // Need to set this value otherwise you will assert when
  23.    // you have an empty recent file list.
  24.    cmdUI.m_nIndexMax = pMenu->GetMenuItemCount();
  25.    cmdUI.DoUpdate(this, FALSE);
  26.   }
  27.  }
  28. }
  29. }

Reply

Marsh Posté le 21-06-2005 à 14:03:20    

Merci, ca marche nikel!

Reply

Marsh Posté le 26-06-2005 à 17:23:24    

Si tu utilises Visual tu as juste à sélectionner l'ID du menu dans les propriétés du dialogue (éditeur de ressources)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed