CMDIFrameWnd::MDISetMenu
Заменяет фреймового окна меню MDI, раскрывающегося меню окна или и того, и другого.
CMenu* MDISetMenu(
CMenu* pFrameMenu,
CMenu* pWindowMenu
);
Параметры
pFrameMenu
Указывает меню меню создать фреймового окна. Если NULL, меню не изменен.pWindowMenu
Указывает меню раскрывающегося меню нового окна. Если NULL, меню не изменен.
Возвращаемое значение
Указатель на меню фреймового окна замененному этим сообщением. Указатель может быть временным и не должен сохранить для последующего использования.
Заметки
После вызова MDISetMenu приложение должно вызвать функцию-член DrawMenuBarCWnd для обновления строки меню.
Если этот вызов заменяет всплывающее меню окна пунктов меню дочернего окна MDI удалены из предыдущего меню окна и добавлены всплывающему меню для нового окна.
Если дочернее окно MDI развернуто и этот вызов заменяет фреймового окна меню MDI, то управления меню элемента управления и восстановления удалены из предыдущего меню фреймового окна и добавлены к новому меню.
Не эта функция-член вызывается при использовании границы, чтобы управлять дочерние окна MDI.
Пример
// 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);
}
Требования
Header: afxwin.h