Overriding change of CMainFrame's menu
Terry Evans -- tevans@netcom.com
Sunday, July 07, 1996
Environment: VC++ 4.1 / Win 95
In my application I have 2 distinct menus. The default menu, which
is used when the application first starts up and a project menu.
Using the default menu a user can open a project, which causes
the main frame's menu to change to the project menu. I force
the menu change using SetMenu() since just opening a project doesn't
create any windows. It just sets up some internal data structures.
After a project is opened, the user can open multiple views of
data pertaining to the current project.
The problem occurs when the last view is now closed in the application.
MFC automatically switches the menu for the main frame back to
the default menu for the application instead of leaving it at the
project menu. I only want the default menu when the user decides to
close the current project.
So, I guess the question is, how do I keep MFC from changing the
menu back when the last view is closed?
Thanks in advance!
Terry Evans
tevans@netcom.com
Paul Kortekaas -- paulk@euronet.nl
Wednesday, July 10, 1996
----------
From: Terry Evans[SMTP:tevans@netcom.com]
Sent: Monday, July 08, 1996 7:05 AM
To: mfc-l@netcom.com
Subject: Overriding change of CMainFrame's menu
Try changing the m_hMenuDefault member of CMainFrame
// Destroy original menu and put a new one in place
// hInst is the a handle to the instance where the resource
// can be found. In my case this can also be a resource-only
// DLL which contains translated menus.
::DestroyMenu(((CMainFrame*)m_pMainWnd)->m_hMenuDefault);
((CMainFrame*)m_pMainWnd)->m_hMenuDefault = ::LoadMenu(hInst,MAKEINTRESOURCE(IDR_NEWMENU));
::SetMenu(m_pMainWnd->m_hWnd, ((CMainFrame*)m_pMainWnd)->m_hMenuDefault);
Paul
| Вернуться в корень Архива
|