【问题标题】:How to display an ampersand in a Windows system tray prompt?如何在 Windows 系统托盘提示符中显示 & 符号?
【发布时间】:2012-04-23 07:09:48
【问题描述】:

我正在使用 C++ 和 WinAPI 进行编程。我使用 Shell_NotifyIcon(NIM_ADD, ...) API 添加了一个系统托盘图标。该图标还有一个相关的用户提示,其中包含一个 & 符号,例如“查看和复制”。但是当提示弹出时用户看到的是“查看副本”。我尝试将 & 号加倍,例如“查看 && 复制”,但没有帮助。

有人知道如何在 Windows 托盘提示符中显示 & 符号吗?

【问题讨论】:

  • 不确定,但你试过转义吗?类似:\&.
  • 你试过&&& 吗?如果发现this link 有人遇到同样的问题并使用&&& 解决。
  • @ereOn:伙计,你真是个天才!单独发布,我会标记为答案。

标签: c++ winapi prompt system-tray


【解决方案1】:

这不是转义 & 符号的问题 - Windows 按设计strip any ampersands from tooltip text,通常有充分的理由:

许多应用程序创建包含对应于工具的工具栏 菜单命令。对于此类工具,工具提示很方便 控件以显示与相应菜单项相同的文本。这 系统自动去除与号 (&) 加速字符 从传递给工具提示控件的所有字符串中,并终止 第一个制表符 (\t) 处的字符串,除非控件具有 TTS_NOPREFIX 样式。

如您所见,答案很简单:您只需将TTS_NOPREFIX 添加到工具提示类即可。

【讨论】:

  • 但我自己并没有创建工具提示。我使用 Shell_NotifyIcon()
  • 获取工具提示句柄,然后添加类。你可以用任何你喜欢的方式来做,有很多。
  • 很抱歉,在这种情况下,您如何处理工具提示?
【解决方案2】:

显然,与号需要双重转义,例如&&&

我不知道为什么,但它似乎有效。

我的来源:this link

【讨论】:

  • 感谢您找到此内容。有效。谁会想到。我尝试将它加倍,但它看起来与一个 & 完全一样,所以我停止尝试。但谁能想到它需要 3 个 )) 典型的微软!
  • 我不确定为什么其他答案会获得投票。它完全忽略了这个问题的重点。如果我自己创建了提示,那么添加 TTS_NOPREFIX 会有所帮助.. doh ......这很容易。无论如何,谢谢。
  • 为什么是三个 (&&&)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多