【问题标题】:How to put a close button in main window menu?如何在主窗口菜单中放置关闭按钮?
【发布时间】:2011-09-04 00:41:46
【问题描述】:
【问题讨论】:
标签:
c
windows
winapi
user-interface
mfc
【解决方案1】:
这些按钮通常带有 MDI 窗口。但是我很确定所描述的应用程序使用了它自己的,或者更可能使用了一些高级的第三方工具包。因为,老实说,Windows API 和 MFC(它只是 Windows API 的一个分类包装器)为您提供的用于 GUI 编程的功能非常有限。
如果您想设计简洁的 UI,请避开 MFC,最好看看 Qt、wxWidgets 之类的东西。
【解决方案2】:
这样做的一个非常简单的方法是使用常规菜单项,使用 AppendMenu,但使用以下标志:
- MF_BITMAP 带有关闭按钮位图,或 MF_OWNERDRAW 或自己绘制
- MF_HELP(又名 WM_RIGHTJUSTIFY),一个没有很好记录的标志,它将证明右边的项目。
这里是one reference to MF_HELP that I found on msdn - 它实际上是关于使用 Win32 API 来右对齐菜单项,但使用的是 Visual Basic。
MF_HELP(在 winuser.h 中定义)是 Win16 时代的遗留物,当时,惯例是右对齐帮助菜单项,因此它会分开。它被“重命名”——在 Win95 前后添加了一个具有相同值的附加 #define——WM_RIGHTJUSTIFY。
请注意,位图菜单项不可访问(例如,对于依赖屏幕阅读器读取屏幕位置的用户);如果采用这种方法,那么至少在菜单的其他地方(例如在文件下)添加一个常规的“关闭”菜单项,这样用户就不必依赖这个项目,也可以通过通常的方式关闭它。还要确保实现 Ctrl-F4 快捷方式,这是大多数支持多个文档或选项卡的应用程序用来关闭当前项目的方式。
【解决方案3】:
千万不要尝试自己创建这种行为。如果您使用 MFC 的 MDI 体系结构,这是您“免费”获得的功能。关闭按钮“在菜单旁边”,您称之为关闭活动的 MDI 子窗口。如果您不使用 MDI 架构,那么尝试在此处添加关闭按钮是没有意义的。你能解释一下你是否使用 MDI 架构吗?