将窗口关闭按钮添加到菜单栏 - C++
Posted
技术标签:
【中文标题】将窗口关闭按钮添加到菜单栏 - C++【英文标题】:Add Window Close Button To Menu Bar -- C++ 【发布时间】:2020-10-05 21:58:39 【问题描述】:我正在尝试编写一个没有标题/标题栏的应用程序(严重浪费屏幕空间)。所以,我希望在菜单栏的末尾添加一个关闭按钮(“X”)。这是我尝试过的代码:
mII.cbSize = sizeof(MENUITEMINFO);
mII.fMask = MIIM_FTYPE | MIIM_BITMAP;
mII.fType = MFT_BITMAP | MFT_RIGHTJUSTIFY;
mII.hbmpItem = HBMMENU_MBAR_CLOSE;
InsertMenuItem(hMenu, NUMMI, TRUE, &mII);
DrawMenuBar(hwnd);
在这种情况下,“NUMMI”等于 5,即当前主菜单项数(编号为“0”到“4”)。新的关闭按钮将是项目编号“5”。
但是,代码似乎什么都不做!菜单栏上没有出现任何按钮。我错过了什么吗?
【问题讨论】:
MIIM_BITMAP
和 MFT_BITMAP
不要在一起。使用其中之一,而不是两者。如果您想使用hbmpItem
,请使用MIIM_BITMAP
。如果您使用MFT_BITMAP
,那么您需要将HBITMAP
放在dwTypeData
中。 Read the documentation.
【参考方案1】:
谢谢雷米。我消除了MFT_BITMAP
标志,现在它可以工作了。 MS 文档没有说明这一点。
对于那些可能正在阅读本文并提出相同问题的人,我应该注意,上面的代码仅显示按钮。必须添加功能,就像任何其他按钮或菜单项一样。将唯一标识符分配给结构的wID
成员。该命令与其他菜单项一起在 WM_COMMAND
情况下处理。
这是修改后的工作代码:
mII.cbSize = sizeof(MENUITEMINFO);
mII.fMask = MIIM_FTYPE | MIIM_BITMAP;
mII.fType = MFT_RIGHTJUSTIFY;
mII.wID = ID_MENUBAR_CLOSE;
mII.hbmpItem = HBMMENU_MBAR_CLOSE;
InsertMenuItem(hMenu, NUMMI, TRUE, &mII);
DrawMenuBar(hwnd);
ID_MENUBAR_CLOSE
是一个宏,定义了我分配给此按钮的唯一编号。该命令在WM_COMMAND
案例中处理:
case ID_MENUBAR_CLOSE:
SendMessage(hwnd, WM_CLOSE, 0, 0L); return 0;
return 0;
瞧,菜单栏上的一个工作关闭按钮。
【讨论】:
以上是关于将窗口关闭按钮添加到菜单栏 - C++的主要内容,如果未能解决你的问题,请参考以下文章
在一个 WordPress 主题上调整浏览器窗口的大小以及添加 JS 代码移动菜单关闭按钮后,导航栏不起作用
c++单文档如何在点关闭按钮时出现提示框,必须是在窗口关闭前出现
JavaFx 将 Window-Control-Buttons 添加到菜单栏(类似 IntelliJ)