2012-04-23 3 views
2

Я программирую с использованием C++ и WinAPI. Я добавил значок в системном трее, используя API-интерфейс Shell_NotifyIcon (NIM_ADD, ...). У этого значка также есть связанная подсказка пользователя, содержащая в нем символ амперсанда, что-то вроде этого: «Просмотр & Копия». Но то, что пользователь видит, когда появляется подсказка, является «View Copy». Я попробовал удвоить амперсанд, например «Просмотр & & Скопируйте», но это не помогло.Как отобразить амперсанд в командной строке Windows?

Кто-нибудь знает, как отобразить амперсанд в подсказке под Windows?

+0

Не уверен, но вы пробовали * эскапировать * это? Что-то вроде: '\ &'. – ereOn

+0

В этом случае я получаю только \. – ahmd0

+2

Вы пробовали '&&&'? Если найдено [эта ссылка] (http://www.developmentnow.com/g/30_2004_12_0_0_27845/Special-Characters-in-ToolTip.htm), где у кого-то была такая же проблема и она была решена с помощью '&&&'. – ereOn

ответ

2

Видимо, амперсандам требуется двойное экранирование, как это &&&.

Я не уверен, почему, но он работает.

Мой источник: this link.

+1

Спасибо, что нашли это. Это сработало. Кто бы мог подумать. Я попытался удвоить его, но он выглядел точно так же, как с одним и, поэтому я перестал пытаться. Но кто бы мог подумать, что нужно 3 из них)) Типичная Microsoft! – ahmd0

+0

И я не уверен, почему этот ответ получил голосов. Он полностью упускает суть этого вопроса. Если бы я сам создал приглашение, то добавление TTS_NOPREFIX помогло бы .. да ... это без проблем. В любом случае, спасибо. – ahmd0

+0

Почему три ('&&&')? –

4

Это не вопрос о побеге амперсанд - Окна дизайн будет strip any ampersands from tooltip text, для в целом хорошей причине:

Многие приложения создают панели инструментов, содержащие инструменты, которые соответствуют командам меню. Для таких инструментов для инструментального элемента удобно отображать тот же текст, что и соответствующий пункт меню. Система автоматически удаляет амперсанд (&) Ускоритель символов из всех строк, передаваемых в управление подсказке, и завершает строку на первой вкладке символов (\ т), если элемент управления не имеет стиль TTS_NOPREFIX.

Как вы можете видеть, ответ очень прост: вам нужно добавить TTS_NOPREFIX в класс всплывающей подсказки, и вы будете установлены.

+0

Но я сам не создаю всплывающую подсказку. Я использую Shell_NotifyIcon() – ahmd0

+0

Получите дескриптор всплывающей подсказки, а затем добавьте класс. Вы можете сделать это так, как вам нравится, их немало. –

+0

Извините, но как вы получаете ручку всплывающей подсказки в этом случае? – ahmd0

Смежные вопросы