我想在主窗口的菜单中添加一个"关闭"按钮。图片中可以找到一个例子:http://ifyoucodeittheywill.com/img/crimson-editor.png
(因此,在窗口标题区域中有一个正常的关闭按钮,但是,在窗口的菜单栏中也有一个关闭按钮——在最右边)。
我使用的是基本的win32 API,不过使用MFC的例子也可以。
有人知道怎么做吗?
谢谢,Andrew
这些按钮通常带有MDI窗口。然而,我非常确信所描述的应用程序使用了它自己的,或者更可能是一些高级的第三方工具包。因为,老实说,Windows API和MFC(它只是Windows API的一个分类包装器)为GUI编程提供的东西是不可承受的限制。
如果你想设计简洁的UI,请避开MFC,最好看看Qt、wxWidgets之类的东西。
一个非常简单的方法是使用常规菜单项,使用AppendMenu,但使用以下标志:
- 带有关闭按钮位图的MF_BITMAP,或MF_OWNERDRAW或自己绘制
- MF_HELP(又名WM_RIGHTJUSTIFY),一个没有很好记录的标志,它将向右证明项目的合理性
下面是我在msdn上找到的对MF_HELP的一个引用——它实际上是关于使用Win32 API对菜单项进行右对齐,但使用Visual Basic。
MF_HELP(在winuser.h中定义)是Win16时代遗留下来的东西,当时的惯例是右对齐"帮助"菜单项,这样它就会与众不同。它在Win95前后被"重命名"为WM_RIGHTJUSTIFY,这是一个添加了相同值的额外#define。
请注意,位图菜单项是不可访问的(例如,对于依赖屏幕阅读器读取屏幕上位置的用户);如果采用这种方法,那么至少在菜单的其他地方添加一个常规的"关闭"菜单项(例如,在"文件"下),这样用户就不必依赖这个项目,也可以通过常规方式关闭它。还要确保实现Ctrl-F4快捷方式,这是大多数支持多个文档或选项卡的应用程序用来关闭当前项目的快捷方式。
无论如何不要试图自己创建这种行为。如果您使用MFC的MDI体系结构,这是您"免费"获得的功能。您称之为"菜单旁边"的关闭按钮会关闭活动的MDI子窗口。如果您没有使用MDI体系结构,那么尝试在那里添加关闭按钮是没有意义的。你能解释一下你是否使用MDI体系结构吗?