请问各位一个问题,在多文档界面中,能不能把菜单去掉和隐藏?
解决方案 »
- 进程和线程?
- vc6.0创建word2003失败
- 还请教达人,我想使用c语言使用com,该如何去做呢?
- 获取当前目录的问题
- 诚招有意在广东汕头工作的软件开发人员,有意者详谈
- 借人气问个问题:登陆www.codeproject.com弹出让我输入网络密码的对话框!
- 用socket通过域名连接web服务器,gethostbyname有时能够解析出正确的ip地址,有时却不能,这是怎么回事?
- 双击list控件的item,应该用什么事件触发?
- 对于多线程的创建
- WH_GETMESSAGE钩子的问题[SDK]
- 请问有哪位大虾写过关于ARX的Dll。
- 在VC中用ADO查询ORACLE数据库(LIKE %XXX%),为什么模糊查询查不到,但是在ORACLE的SQL PLUS里相同的SQL语句却能查到,为什么?
pCmdUI->Enable(flag);
}
flag is used to show or hide the menu
我曾经为了隐藏工具条用了SetHeight(0),呵呵。
1.从CWnd派生一个类,如CMyMDIClient
2.覆盖虚函数CMyMDIClient::DefWindowProc,在函数首部加入:
if(message == WM_MDIREFRESHMENU) return TRUE;
3.CMainFrame中增加成员变量:
CMyMDIClient m_wndClient;
4.覆盖虚函数CMainFrame::OnCreateClient,修改函数体为:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if(!CreateClient(lpcs, NULL)) return FALSE; m_wndClient.SubclassWindow(m_hWndMDIClient); BOOL b = SetMenu(NULL); return TRUE;
}
5.覆盖虚函数CMainFrame::CreateClient,修改函数体为:
BOOL CMainFrame::CreateClient(LPCREATESTRUCT lpCreateStruct,
CMenu* pWindowMenu)
{
//此函数体从MFC的CMDIFrameWnd::CreateClient拷贝出来,注释二句话而已
ASSERT(m_hWnd != NULL);
ASSERT(m_hWndMDIClient == NULL);
DWORD dwStyle = WS_VISIBLE | WS_CHILD | WS_BORDER |
WS_CLIPCHILDREN | WS_CLIPSIBLINGS |
MDIS_ALLCHILDSTYLES; // allow children to be created invisible
DWORD dwExStyle = 0;
// will be inset by the frame// if (afxData.bWin4) //不知如何引入afxData,待进一步探讨
{
// special styles for 3d effect on Win4
dwStyle &= ~WS_BORDER;
dwExStyle = WS_EX_CLIENTEDGE;
} CLIENTCREATESTRUCT ccs;
// ccs.hWindowMenu = pWindowMenu->GetSafeHmenu(); //我注释的
// set hWindowMenu for MFC V1 backward compatibility
// for MFC V2, window menu will be set in OnMDIActivate
ccs.idFirstChild = AFX_IDM_FIRST_MDICHILD; if (lpCreateStruct->style & (WS_HSCROLL|WS_VSCROLL))
{
// parent MDIFrame's scroll styles move to the MDICLIENT
dwStyle |= (lpCreateStruct->style & (WS_HSCROLL|WS_VSCROLL)); // fast way to turn off the scrollbar bits (without a resize)
ModifyStyle(WS_HSCROLL|WS_VSCROLL, 0, SWP_NOREDRAW|SWP_FRAMECHANGED);
} // Create MDICLIENT control with special IDC
if ((m_hWndMDIClient = ::CreateWindowEx(dwExStyle, _T("mdiclient"), NULL,
dwStyle, 0, 0, 0, 0, m_hWnd, (HMENU)AFX_IDW_PANE_FIRST,
AfxGetInstanceHandle(), (LPVOID)&ccs)) == NULL)
{
TRACE(_T("Warning: CMDIFrameWnd::OnCreateClient: failed to create MDICLIENT.")
_T(" GetLastError returns 0x%8.8X\n"), ::GetLastError());
return FALSE;
}
// Move it to the top of z-order
::BringWindowToTop(m_hWndMDIClient); return TRUE;
}
6.删除菜单ID或者修改菜单ID的数值现在编译连接,应该没有菜单了吧:)
pMenu->DeleteMenu(2,MF_BYPOSITION);
pMenu->DeleteMenu(1,MF_BYPOSITION);
pMenu->DeleteMenu(0,MF_BYPOSITION);