如何禁用窗口关闭按钮在一个 MFC 多文档界面 (MDI) 应用程序
2013-11-23 14:21
441 查看
在某些情况下可以防止用户单击关闭按钮以关闭 MFC 应用程序中的框架窗口的窗口的标题栏中。 关闭按钮可以删除删除在 WS_SYSMENU 样式从帧窗口。 但是,此的 Minimize 最大化,和还原按钮也删除,并且无法添加。 这是 Windows 的设计的依据。
要解决此限制,可以通过禁用关闭按钮来模拟没有关闭按钮在窗口的功能。 在 WM_CREATE 消息处理程序中的 MDI 子框架窗口 (CMDIChildWnd 派生类) 禁用在关闭按钮使用下面的代码:
[/code]
子框架窗口未处于最大化时, 以上代码禁止用户通过单击关闭按钮关闭子框架窗口。 当子框架窗口最大化时以上代码将使显示禁用关闭按钮。 但是,用户仍然可以通过单击此窗口关闭按钮关闭子框架窗口。 可以通过它发送到子框架窗口时捕获 SC_CLOSE 命令并阻止此命令的进一步处理阻止这。 为此这一点,请使用 WM_SYSCOMMAND 消息处理程序为下面的示例中的子框架的类:
[/code]
要解决此限制,可以通过禁用关闭按钮来模拟没有关闭按钮在窗口的功能。 在 WM_CREATE 消息处理程序中的 MDI 子框架窗口 (CMDIChildWnd 派生类) 禁用在关闭按钮使用下面的代码:
[code]CMenu *pSysMenu = GetSystemMenu(FALSE); ASSERT(pSysMenu != NULL); VERIFY(pSysMenu->RemoveMenu(SC_CLOSE, MF_BYCOMMAND));
[/code]
子框架窗口未处于最大化时, 以上代码禁止用户通过单击关闭按钮关闭子框架窗口。 当子框架窗口最大化时以上代码将使显示禁用关闭按钮。 但是,用户仍然可以通过单击此窗口关闭按钮关闭子框架窗口。 可以通过它发送到子框架窗口时捕获 SC_CLOSE 命令并阻止此命令的进一步处理阻止这。 为此这一点,请使用 WM_SYSCOMMAND 消息处理程序为下面的示例中的子框架的类:
[code]// CChildFrame is a CMDIChildWnd-derived class. void CChildFrame::OnSysCommand(UINT nID, LPARAM lParam) { if(nID == SC_CLOSE) return; CMDIChildWnd::OnSysCommand(nID, lParam); }
[/code]
相关文章推荐
- 如何禁用窗口关闭按钮在一个 MFC 多文档界面 (MDI) 应用程序
- 魔改——MFC MDI程序 定制 文档模板 运行时全部打开 禁用关闭按钮
- 在C++/MFC框架应用程序里,当浮动工具条被拖离主窗口后,一般都有一个“关闭”按钮,
- MFC MDI项目如何一个文档显示多个不同视图类(比如文字和图表,各自拥有单独的框架窗口)
- 如何禁用MFC单文档主窗口的最大化按钮?
- 关于WM中MFC单文档界面“新建”菜单和关闭按钮的处理
- [WPF疑难]如何禁用窗口上的关闭按钮
- Win8 Metro界面应用程序没有关闭按钮如何手动关闭应用程序
- [WPF疑难]如何禁用窗口上的关闭按钮
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体
- 如何防止一个MDI应用程序在启动时打开一个新(空)文档?(新)
- 如何防止一个MDI应用程序在启动时打开一个新(空)文档?(新)
- WPF中如何禁用/去除窗口右上角的关闭按钮
- 通过按钮控件实现MDI新建子窗口(MFC自动生成的视图、文档、子框架共用)
- [WPF疑难]如何禁用窗口上的关闭按钮
- 如何去掉MFC单文档右上角的关闭按钮
- 如何让MFC程序关闭按钮失效,也无法右击任务栏关闭窗口来关闭?
- MFC如何在有界面的应用程序中开启控制台窗口
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体 分类: MFC
- 如何去掉MFC单文档右上角的关闭按钮