将窗口关闭按钮添加到菜单栏 - 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_BITMAPMFT_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)

Qt中,当QWidget不是作为顶级窗体出现时,怎么让他显示关闭按钮呢

尝试通过单击打开它的 div 中断按钮外部来关闭弹出窗口

MFC中如何在菜单栏中添加按钮