#winapi
Вопрос:
Как я могу получить символы, которые DrawText()
будут подчеркиваться?
Я передал веревочку "my randoamp;m string"
. m
Это подчеркивается DrawText()
.
Я хочу выбрать символы, которые будут подчеркнуты. Пожалуйста, предложите решение. Струны иногда также могут быть японскими.
Один из способов-сделать это самому. Я не хочу делать это сам, я хочу это из API.
Ответ №1:
Это может сделать функция SHStripMneumonic (UNICODE или ANSI).
Примечания:
- он удаляет все символы » amp; » из входной строки;
- он возвращает последний символ с мнемоникой, поэтому, например, вызов его с помощью «my randoamp;m striamp;ng» удалит все » amp; «из строки и вернет «n»;
- вы можете избежать разыскиваемого символа»amp;», если удвоите его.
- он задокументирован как «доступный в Windows XP и Windows Server 2003. Это может быть изменено или недоступно в последующих версиях Windows«. Для получения дополнительной информации я протестировал его в Windows 11 и последней версии Windows SDK (20348).
Бонусная ссылка: Почему функция SHStripMneumonic написана с ошибкой?
Комментарии:
1. Я собирался прокомментировать «Публичного API нет…» , и я бы тоже был почти прав. Тем не менее, я не знал об этом, хотя у меня остались отдаленные воспоминания о чтении статьи в блоге, на которую была ссылка. Любой из них абсолютно полезен, спасибо! (Хотя вы, возможно, захотите добавить, что этот API не «предназначен» для публичного использования.)