AP.*_*AP. 6 c++ windows winapi menu ownerdrawn
仅使用Win32 C++(没有WTL或MFC或任何其他第三方库),如何获得自定义菜单边框?
我能够拥有物品,但边界在非客户区域,我无法找到改变它们的方法.
有办法吗?
不管你如何实现它,它都会有点麻烦。
一种选择是忘记 HMENU,并使用自定义的始终位于顶部的窗口构建您自己的菜单。这可能是太多的工作,你永远不会让一切都完美。我突然想到你必须处理 LTR 与 RTL、可访问性、可配置设置(如阴影和菜单动画(滑动/淡入淡出))。可能SetMenu对 HWND 所做的一些事情您无法通过这样的 hack 来复制,但您可以通过在 rebar 中实现它来回避这个问题。
如果你想继续使用 HMENU,那么你必须使用SetWindowsHookEx来查找菜单 HWND。菜单类是#32768. 然后,您可以对窗口进行子类化并覆盖 WM_NC* 和 WM_PRINT* 消息。这篇 Codeproject 文章还提供了有关您需要处理的未记录消息 (0x01e5) 的信息。