По умолчанию Windows (XP) показывает подчеркнутые горячие клавиши только при нажатии ALT. Это можно изменить в свойствах дисплея в поддиалоге «Эффекты», чтобы горячие клавиши были всегда подчеркнутый.
Как это можно изменить программно? Какой вызов API или параметр реестра можно использовать для изменения этого параметра?





Вы имеете в виду, что хотите изменить эту общесистемную настройку или хотите иметь возможность переопределить поведение только в своей программе?
Если это последнее, и вы используете Win32 API, похоже, вы сможете поймать уведомление WM_CHANGEUISTATE: http://blogs.msdn.com/oldnewthing/archive/2005/05/03/414317.aspx Я сам не пробовал, но это кажется возможным.
Если вы стремитесь к первому, мне пока не удалось найти метод.
На самом деле это довольно просто, но вам не нужно ловить WM_CHANGEUISTATE, вам нужно Отправить в вашем окне: SendMessage(hWnd, WM_CHANGEUISTATE, UISF_HIDEACCEL << 16 | UIS_CLEAR, 0);. Спасибо, я искал это почти 2 часа!
Я нашел решение, как запросить и установить:
BOOL b
SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, &b, 0);
if (!b) {
b = TRUE;
SystemParametersInfo(SPI_SETKEYBOARDCUES, 0, &b, 0);
}
Можете ли вы опубликовать свое решение в качестве ответа, чтобы люди могли проголосовать за него? Это также приведет к тому, что этот вопрос исчезнет из списка вопросов, на которые нет ответов.