如何创建 MFC 应用程序在 Visual C++ 中没有菜单栏
来源:互联网 发布:思维导图 for mac 编辑:程序博客网 时间:2024/06/11 20:52
若要创建没有菜单栏的 SDI 应用程序的步骤
- 生成与应用程序向导 SDI 应用程序。不要删除 IDR_MAINFRAME 菜单资源。如果您有不使用应用程序向导生成的应用程序,则不会删除相应的主菜单资源。要求离开菜单资源,以避免在 MFC 代码断言失败。
- 若要防止主应用程序窗口的菜单栏、 删除已加载的菜单,并将 CREATESTRUCT 结构的 hMenu 字段设置为 NULL,在 CFrameWnd::PreCreateWindow() 函数:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if(cs.hMenu!=NULL) { ::DestroyMenu(cs.hMenu); // delete menu if loaded cs.hMenu = NULL; // no menu for this window } return CFrameWnd::PreCreateWindow(cs); }
若要创建没有菜单栏的 MDI 应用程序的步骤
- 生成与应用程序向导的 MDI 应用程序。不要删除 IDR_MAINFRAME 菜单资源。如果您有不使用应用程序向导生成的应用程序,则不会删除相应的主菜单资源。要求离开菜单资源,以避免在 MFC 代码断言失败。
- 删除与 MDI 子窗口 (IDR_xxxTYPE) 相关联的菜单资源。不使用它们。通过删除它们,您可以避免资源 (内存) 泄漏。
- 重写 CMainFrame 类的 PreCreateWindow() 函数:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if(cs.hMenu!=NULL) { ::DestroyMenu(cs.hMenu); // delete menu if loaded cs.hMenu = NULL; // no menu for this window } return CMDIFrameWnd::PreCreateWindow(cs); }
- 修改代码,负责通过重写 CMainFrame 的 LoadFrame() 和 OnCreateClient() 方法切换菜单。这是必要的因为 MFC 已加载并自动切换菜单。下图显示必须做什么:
// Overridden method declarations for CMainFrame BOOL LoadFrame( UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = NULL, CCreateContext* pContext = NULL ); BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* /*pContext*/); // Overridden method declarations for CMainFrame BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { return CFrameWnd::LoadFrame(nIDResource,dwDefaultStyle, pParentWnd,pContext); } BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* /*pContext*/) { return CreateClient(lpcs,NULL); }
注意: 而不是在重写中的 LoadFrame 调用基类 (CMDIFrameWnd),则调用它的基类,CFrameWnd,相反。这样可以避免处理与 MDI 菜单的代码。
如果不清楚的可以看英文原文:
FROM: http://support.microsoft.com/kb/131368
0 0
- 如何创建 MFC 应用程序在 Visual C++ 中没有菜单栏
- 在MFC中如何创建没有菜单栏的单文档应用程序
- MFC中创建没有子窗口的MDI应用程序
- MFC中创建没有子窗口的MDI应用程序
- 如何创建一个 Windows 服务应用程序的安装项目在 Visual C# 中
- MFC如何在菜单栏唤起一个对话框
- 创建window应用程序(win32 非 mfc) 去掉菜单栏
- MFC 多文档中如何去掉菜单栏
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体
- 转贴-Visual C++.NET定制MFC应用程序
- 在mfc编程中,创建多文档应用程序时,如何关闭启动时自动打开的空文档
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体 分类: MFC
- (GDI+) 如何在 MFC 或 Win32 应用程序中使用GDI+
- 如何在MFC应用程序中使用MAPI32.DLL发送电子邮件
- 如何在MFC应用程序中使用MAPI32.DLL发送电子邮件。
- 如何在Visual Studio2010上创建一个 C语言程序?!
- 如何在对话框中加入菜单栏?
- How to create MFC applications that do not have a menu bar in Visual C++(MFC单文档和多文档程序中去掉菜单栏)(转)
- 课程设计:学生管理系统(c++)
- phpize使用方法
- u-boot分析
- i386 和x86的区别
- 八皇后 源代码(C++) 答案
- 如何创建 MFC 应用程序在 Visual C++ 中没有菜单栏
- hdu 4009 最小树形图模板题朱刘算法
- Health Monitor简介
- 跨程序集使用dynamic(.net)
- hdu 1150 Machine Schedule
- [LeetCode] Best Time to Buy and Sell Stock III
- X86的通用寄存器简要说明
- Asp.net核心对象
- LINUX取某文件的前多少行显示出来