给 Label C++ 的首字母加下划线(下划线不显示)

Underlining first letter of Label C++ (Underline doesn't show)

问题: 我希望在某些静态文本控件(例如登录名和密码)的首字母下划线。当按下 ALT 键时,字母会变成下划线。

我尝试过的: 在 C# 中,我能够通过使用 & 符号来实现这一点。例如“&登录”或“&密码”。我试图在 C++ 中找到类似的方法。下图显示了 C# 中的示例:

我在 Visual Studio 2010 年使用 MFC/C++。

编辑: 添加了有关 ALT 键的信息。这是我在 Visual Studio 2010 的属性框中尝试的示例。我在 "Caption" 的文本前面添加了一个符号。

当我在调试器中 运行 我的程序时,第一个字母没有下划线(直到 ALT 被按下):

菜单和静态控件之间存在根本区别。

要在菜单中执行此操作,就像在 C# 中一样。这是在 C++ 项目中编辑菜单的屏幕截图:

...结果如下:

对于静态控件,您必须清除控件的 SS_NOPREFIX 样式才能获得相同的行为。然而,据我观察,在某些情况下下划线不显示(但我从来没有确定下划线不显示的确切情况——我认为当它发生时,我通过更改字体修复了它,但我不太记得了)。

在 SO 社区的帮助下,似乎在所需的下划线字母前使用和号 (&) 符号是正确的方法。我的个人计算机上有一个设置,可以隐藏带下划线的字母,直到按下 ALT 键。

根据 MSDN:

A user often has to press ALT in order to see access key designations. To ensure that you address them throughout the development process, set your computer to persistently display access keys.

在Windows8:打开控制面板->轻松访问中心->使键盘更易于使用。

在屏幕底部,选中 "Underline keyboard shortcuts and access keys"。