Подчеркивание символов в меню программы
От: Аноним  
Дата: 18.02.09 06:58
Оценка:
Заметил такую вещь, что в некоторых программах, подчеркивания букв в меню программы появляется сразу же после запуска программы, например MS Word 2003, MS Excel 2003, Firefox 3.0.5 и другие. В других же программах подчеркивания становятся видны только после нажатия кнопки Alt. Хотелось бы узнать от чего зависит такое поведение программ: использованы какие-то особые флаги при регистрации класса окна или использованы какие-то другие WinApi функции при создании меню или еще что-нибудь?
Re: Подчеркивание символов в меню программы
От: c-smile Канада http://terrainformatica.com
Дата: 18.02.09 07:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Хотелось бы узнать от чего зависит такое поведение программ: использованы какие-то особые флаги при регистрации класса окна или использованы какие-то другие WinApi функции при создании меню или еще что-нибудь?


Это значит что эти программы используют самодельную имплементацию меню. А не системную.
Re[2]: Подчеркивание символов в меню программы
От: Аноним  
Дата: 18.02.09 07:49
Оценка:
CS>Это значит что эти программы используют самодельную имплементацию меню. А не системную.

То что Microsoft или Mozilla сделали свою собственную имплементацию в это еще можно поверить. Но у меня на компьютере есть достаточно старые программы, где подчеркивания уже есть при запуске, при этом эти программы используют довольно старую графическую библиотеку под названием ROL. Не думаю, что там самодельная имплементация, так как эта графическая библиотека это просто оболочка на WinApi, поэтому я думаю, что это должно быть стандартным поведением, другое дело, что надо как-то настроить это стандартное поведение: установить какие-то флаги или еще что-нибудь. Может кто-нибудь знает как этом можно сделать?
Re: Подчеркивание символов в меню программы
От: Аноним  
Дата: 18.02.09 12:18
Оценка:
Нашел частичный ответ на свой вопрос.
http://forum.sources.ru/index.php?showtopic=211646&st=0&
Ответ: "Это настройка ОС. Эффекты->Скрывать указатели вызова с клавиатуры до нажатия <Alt>. Если очень нужно, смотри в сторону SystemParametersInfo."

Остается только вопрос почему, когда "Эффекты->Скрывать указатели вызова с клавиатуры до нажатия <Alt>" включено, некоторые приложения, тем не менее, показывают символы подчеркивания?
Может быть они каким-нибудь образом переопределяют системные настройки внутри своего окна?
Re[2]: Подчеркивание символов в меню программы
От: Sergei I. Gorelkin Россия  
Дата: 18.02.09 14:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Остается только вопрос почему, когда "Эффекты->Скрывать указатели вызова с клавиатуры до нажатия <Alt>" включено, некоторые приложения, тем не менее, показывают символы подчеркивания?

А>Может быть они каким-нибудь образом переопределяют системные настройки внутри своего окна?

Ничего они не переопределяют, они просто рисуют все сами так, как это делалось во времена Windows 95.

У ф-ции DrawText есть флаг DT_HIDEACCEL, который скрывает подчеркивание.
При рисовании ownerdraw контролов и пунктов меню, в поле itemState структуры DRAWITEMSTRUCT винда устанавливает флаги ODS_NOACCEL и ODS_NOFOCUSRECT когда нужно скрывать подчеркивания и рамку фокуса соответственно.
Наконец, есть сообщения WM_QUERYUISTATE, WM_CHANGEUISTATE и WM_UPDATEUISTATE, с помощью которых можно как узнать о необходимости переключения режима UI, так и вызывать его переключение.
Re: Подчеркивание символов в меню программы
От: . Великобритания  
Дата: 18.02.09 15:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Заметил такую вещь, что в некоторых программах, подчеркивания букв в меню программы появляется сразу же после запуска программы, например MS Word 2003, MS Excel 2003, Firefox 3.0.5 и другие. В других же программах подчеркивания становятся видны только после нажатия кнопки Alt. Хотелось бы узнать от чего зависит такое поведение программ: использованы какие-то особые флаги при регистрации класса окна или использованы какие-то другие WinApi функции при создании меню или еще что-нибудь?

Интересно, кому они помешались, что их решили скрывать? Ведь это неудобно, имхо.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Подчеркивание символов в меню программы
От: Аноним  
Дата: 19.02.09 06:05
Оценка:
Здравствуйте, ., Вы писали:

.>Интересно, кому они помешались, что их решили скрывать? Ведь это неудобно, имхо.

Видимо большинство пользователей ими не пользуются. А продвинутые пользователи могут снять галочку, чтобы всегда видеть подчеркивания.
Читал советы по созданию GUI, там говорилось, что надо как можно меньше "удивлять" пользователя, какими-нибудь особенностями GUI. Поэтому думаю оставить стандарное поведение меню, а если кому-нибудь захочется видеть эти подчеркивания он может снять галочку в настройках Windows.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.