MFC 单文档去掉菜单栏

一. 去掉菜单栏

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 函数中添加:

  	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  		return -1;
  	// 1. 保留 WS_SYSMENU,不清除它
  	// 不修改窗口样式

  	// 2. 移除菜单栏(文件、编辑等)
  	SetMenu(NULL);

  	// 3. 禁用系统菜单的弹出(点击图标或右键标题栏不弹出菜单)
  	// 方法:移除系统菜单中的所有项
  	HMENU hSysMenu = ::GetSystemMenu(NULL, FALSE);
  	if (hSysMenu) {
  		int nCount = GetMenuItemCount(hSysMenu);
  		for (int i = nCount - 1; i >= 0; --i) {
  			RemoveMenu(hSysMenu, i, MF_BYPOSITION);
  		}
  	}

效果:
image

下面这样好像是同样的效果,更简洁:

	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	// 1. 移除菜单栏(文件、编辑等)
	SetMenu(NULL);

	// 2. 保留系统菜单,但不显示
	// 不修改系统菜单,保留功能

	// 3. 移除左上角图标(可选)
	SetIcon(NULL, FALSE);
	SetIcon(NULL, TRUE);
posted @ 2026-07-16 09:22  double64  阅读(3)  评论(0)    收藏  举报