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