Owner-Draw 菜单项的菜单加速键(下划线)

Posted

技术标签:

【中文标题】Owner-Draw 菜单项的菜单加速键(下划线)【英文标题】:Menu Accelerator Keys (underline) for Owner-Draw menu items 【发布时间】:2013-02-13 19:57:05 【问题描述】:

我尝试使用 Owner-Draw 菜单。我无法解决的唯一问题是我不知道如何实现(或启用?)菜单加速键(下划线)。我使用的是Win32,我关心的是主菜单,而不是子菜单。使用 Owner-Draw 菜单时如何实现或启用下划线?

附言Menu Accelerator Keys 是一个带下划线的字母,当用户按下 Alt 访问菜单项时使用。它是由 & 字符创建的,例如 Save &As。

【问题讨论】:

【参考方案1】:

使用 DrawTextEx() 来绘制文本,它会自动处理它。如果您需要隐藏下划线,请使用 DT_HIDEPREFIX 选项,如果您出于某种原因需要显示 &,请使用 DT_NOPREFIX。

【讨论】:

【参考方案2】:

字符前的 & 用于下划线也适用于 DrawText(); DT_HIDEPREFIX 也可以。至少这对于所有者绘制的按钮控件来说可以正常工作。

【讨论】:

以上是关于Owner-Draw 菜单项的菜单加速键(下划线)的主要内容,如果未能解决你的问题,请参考以下文章

禁用 Alt 键访问 Windows 菜单/导致菜单加速

MFC的UI更新机制和加速键的创建

在菜单中显示加速键

JavaFX MenuItem.setAccelerator() 不工作

WPF 根据指定条件显示或禁止listView中的每一项的右键菜单

关于右键菜单没有新建项的问题