CMDIFrameWnd::MDISetMenu
Zastępuje menu MDI ramki okna lub okna wyskakującego menu.
CMenu* MDISetMenu(
CMenu* pFrameMenu,
CMenu* pWindowMenu
);
Parametry
pFrameMenu
Określa menu menu nowy ramka okna.Jeśli NULL, menu nie jest zmieniana.pWindowMenu
Określa nowe okno menu wyskakującego menu.Jeśli NULL, menu nie jest zmieniana.
Wartość zwracana
Wskaźnik do menu Ramka okna zastępuje tę wiadomość.Wskaźnik może być tymczasowy i nie powinny być przechowywane w celu późniejszego użycia.
Uwagi
Po wywołaniu MDISetMenu, aplikacja musi wywołać DrawMenuBar Członkowskich funkcji CWnd , aby zaktualizować pasek menu.
Jeśli wywołanie tej zastępuje okno podręczne, elementy menu okno potomne MDI są usuwane z poprzedniego menu Okno i dodaje się nowe okno menu wyskakującego.
To wywołanie zastępuje MDI menu Ramka okno jest zmaksymalizowane okno potomne MDI, formanty formant menu i przywracania są usuwane z poprzedniego menu Okno ramek i dodaje się nowe menu.
Ta funkcja Członkowskie nie wymagają użycia ramy do zarządzania okien podrzędnych MDI.
Przykład
// 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);
}
Wymagania
Nagłówek: afxwin.h