我正在 wxWidgets 中创建一个自定义控件,该控件将菜单显示为其中的一部分,并且目前正在 Windows 方面工作。wxWidgets 没有设置菜单宽度的方法。它只是使窗口与最长的字符串一样宽,再加上两边的几个像素。
在 API 中,有一种方法可以获取实际的 Windows API 菜单句柄。除了根据字符串的宽度自行计算之外,Windows API 是否有设置菜单宽度的方法?
使用菜单句柄,可以循环遍历菜单项并调用SetMenuItemInfo,表示要对菜单项进行所有者绘制。执行此操作时,附加菜单的窗口将收到WM_MEASUREITEM
消息,然后您将通过设置菜单所需的尺寸来响应该消息。在这里你可以设置你的宽度。
当然,这意味着您必须为包含菜单的窗口子类化 Windows 消息处理程序。
首先,尝试获取菜单的HWND:(1)WM_DRAWITEM(2)获取HDC(3)WindowFromDC(),然后可以任意调整菜单的各个方面。注意:不要将 WM_QUIT WM_CLOSE 发送到菜单,否则您将在毫无头绪的情况下有效地关闭计算机。
它与 WM_MEASUREITEM 无关
只需使用内部 win32 菜单消息
(Win32 常见问题解答:news://comp.os.ms-windows.programmer.win32)