CMDIFrameWnd::MDISetMenu
MDI 프레임 창의 메뉴 또는 팝업 메뉴 창에서 대체합니다.
CMenu* MDISetMenu(
CMenu* pFrameMenu,
CMenu* pWindowMenu
);
매개 변수
pFrameMenu
새 프레임 창 메뉴의 메뉴를 지정합니다.경우 NULL, 메뉴는 변경 되지 않습니다.pWindowMenu
새 창 팝업 메뉴의 메뉴를 지정합니다.경우 NULL, 메뉴는 변경 되지 않습니다.
반환 값
이 메시지로 대체 프레임 창 메뉴에 대 한 포인터입니다.포인터가 임시 되어 나중에 사용 하려고 저장 해서는 안됩니다.
설명
호출 MDISetMenu, 응용 프로그램에서 호출 해야는 DrawMenuBar 멤버 함수를 CWnd 메뉴 표시줄을 업데이트 합니다.
이 호출 창 팝업 메뉴를 대체 하는 경우 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);
}
요구 사항
헤더: afxwin.h