判断一个窗口是不是有菜单栏

Posted

技术标签:

【中文标题】判断一个窗口是不是有菜单栏【英文标题】:Find out whether a window has a menu bar判断一个窗口是否有菜单栏 【发布时间】:2016-06-09 14:41:48 【问题描述】:

我想知道是否可以获得信息,Windows 窗口中是否有菜单。

此信息将用作AdjustWindowRect 的第三个参数。如果可能的话,我不想自己保存这些信息。

【问题讨论】:

我建议使用关键字“MSDN C++检测菜单”搜索互联网 如果GetMenu 返回NULL 则没有标准菜单。 啊哈..我在搜索 MSDN ...但从未找到菜单参考..谢谢大家! @fodinabor 你可能还想记住this; AdjustWindowRect() 不处理包含多行的菜单。 窗口也可以使用非标准菜单的自定义菜单栏,因此这些 API 无论如何都无法考虑到这一点。 【参考方案1】:

如果窗口已经创建,你可以调用GetMenu,传递窗口的句柄。如文档中所述:

如果指定窗口没有菜单,则返回值为NULL。

另一方面,如果你想知道一个尚未创建的窗口是否默认有菜单1),你可以通过调用@查询类信息987654322@,并比较返回的WNDCLASS' lpszMenuName 成员。同样,正如文档所解释的:

如果此成员为 NULL,则属于此类的窗口没有默认菜单。


1)请注意,窗口仍然可以在运行时通过调用 SetMenu 添加或删除菜单。

【讨论】:

以上是关于判断一个窗口是不是有菜单栏的主要内容,如果未能解决你的问题,请参考以下文章

C++\GLUT 窗口菜单栏

菜单栏未显示在第二个窗口上

菜单栏工具栏状态栏

windows 窗口由那几部分组成 有啥用

菜单栏的VC菜单

如何在导航栏上添加侧菜单关闭按钮