0

我正在 wxWidgets 中创建一个自定义控件,该控件将菜单显示为其中的一部分,并且目前正在 Windows 方面工作。wxWidgets 没有设置菜单宽度的方法。它只是使窗口与最长的字符串一样宽,再加上两边的几个像素。

在 API 中,有一种方法可以获取实际的 Windows API 菜单句柄。除了根据字符串的宽度自行计算之外,Windows API 是否有设置菜单宽度的方法?

4

3 回答 3

2

使用菜单句柄,可以循环遍历菜单项并调用SetMenuItemInfo,表示要对菜单项进行所有者绘制。执行此操作时,附加菜单的窗口将收到WM_MEASUREITEM消息,然后您将通过设置菜单所需的尺寸来响应该消息。在这里你可以设置你的宽度。

当然,这意味着您必须为包含菜单的窗口子类化 Windows 消息处理程序。

于 2009-02-06T03:01:46.043 回答
0

首先,尝试获取菜单的HWND:(1)WM_DRAWITEM(2)获取HDC(3)WindowFromDC(),然后可以任意调整菜单的各个方面。注意:不要将 WM_QUIT WM_CLOSE 发送到菜单,否则您将在毫无头绪的情况下有效地关闭计算机。

于 2009-11-11T07:17:25.640 回答
-1

它与 WM_MEASUREITEM 无关

只需使用内部 win32 菜单消息

(Win32 常见问题解答:news://comp.os.ms-windows.programmer.win32)

于 2009-02-06T13:36:21.550 回答