Sdílet prostřednictvím


CMDIFrameWnd::MDISetMenu

Nahrazuje nabídky MDI rámeček okna nebo rozbalovací nabídky okna.

CMenu* MDISetMenu( 
   CMenu* pFrameMenu, 
   CMenu* pWindowMenu  
);

Parametry

  • pFrameMenu
    Určuje v nabídce nová nabídka rámeček okna.Pokud NULL, v nabídce se nezmění.

  • pWindowMenu
    Určuje nabídky rozbalovací nabídky okna.Pokud NULL, v nabídce se nezmění.

Vrácená hodnota

Ukazatel na nabídce rámeček okna nahrazuje tuto zprávu.Ukazatel může být dočasné a neměli uložen pro pozdější použití.

Poznámky

Po volání MDISetMenu , musí aplikace volat DrawMenuBar členské funkce CWnd aktualizace nabídek.

Pokud toto volání nahradí v rozbalovací nabídce okna, jsou položky nabídky podřízené okno MDI z předchozí nabídky okna a přidán rozbalovací nabídky okna.

MDI podřízené okno je maximalizováno a nahradí toto volání nabídce rámeček okno MDI, jsou ovládací prvky ovládací nabídky a obnovení odebrán z nabídky předchozí okno rámců a přidána nová nabídka.

Nevolejte tento členské funkce používáte rozhraní ke správě vašeho podřízených oken MDI.

Příklad

// CMdiView::OnReplaceMenu() is a menu command handler for CMdiView 
// class, which in turn is a CView-derived class. It loads a new 
// menu resource and replaces the main application window's menu 
// bar with this new menu. 
void CMdiView::OnReplaceMenu() 
{
   // Load a new menu resource named IDR_SHORT_MENU. m_hDefaultMenu is  
   // a member variable of CMdiDoc class (a CDocument-derived class).  
   // Its type is HMENU.
   CMdiDoc* pdoc = (CMdiDoc*)GetDocument();
   pdoc->m_hDefaultMenu = 
      ::LoadMenu(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_SHORT_MENU));
   if (pdoc->m_hDefaultMenu == NULL)
      return;

   // Get the parent window of this view window. The parent window is 
   // a CMDIChildWnd-derived class. We can then obtain the MDI parent  
   // frame window using the CMDIChildWnd*. Then, replace the current  
   // menu bar with the new loaded menu resource.
   CMDIFrameWnd* frame = ((CMDIChildWnd*)GetParent())->GetMDIFrame();
   frame->MDISetMenu(CMenu::FromHandle(pdoc->m_hDefaultMenu), NULL);
   frame->DrawMenuBar();
}
// GetDefaultMenu() is an undocumented virtual function for  
// CDocument class. It allows the document to determine which  
// menu to display. m_hDefaultMenu is of type HMENU. Its value 
// is initialized to NULL either in the constructor or  
// CDocument::OnNewDocument(). And the menu resource is destroyed 
// in the destructor to avoid having too many menus loaded at once.
HMENU CMdiDoc::GetDefaultMenu()
{
   if (m_hDefaultMenu)
      return m_hDefaultMenu;

   return COleServerDoc::GetDefaultMenu();
}

// Initialize member variable(s) in the constructor. CMdiDoc is 
// a CDocument-derived class.
CMdiDoc::CMdiDoc()
{
   // Use OLE compound files
   EnableCompoundFile();

   m_hDefaultMenu = NULL; // initialize to NULL
}

// Destroy menu resource in CMdiDoc's destructor. CMdiDoc is 
// a CDocument-derived class.
CMdiDoc::~CMdiDoc()
{
   if (m_hDefaultMenu)
      ::DestroyMenu(m_hDefaultMenu);
}

Požadavky

Záhlaví: afxwin.h

Viz také

Referenční dokumentace

Třída CMDIFrameWnd

Graf hierarchie

CWnd::DrawMenuBar

WM_MDISETMENU