Ускорители амперсанда вызывают звуковой сигнал в диалоге Win32 - PullRequest
0 голосов
/ 20 июня 2010

У меня есть динамически созданная панель инструментов в простом диалоге Win32.Мои кнопки добавляются с помощью ярлыков &, которые правильно ставят подчеркивание для символов, следующих за амперсандом, но нажатие Alt + (char) вызывает звуковой сигнал, а кнопка не нажимается.

Давно я не занимался разработкой Win32 API.Нужно ли что-то сделать с динамически создаваемым дочерним окном (панелью инструментов), чтобы клавиши акселератора работали?

Это может быть что-то действительно очевидное, чего мне не хватает ...

Ответы [ 2 ]

1 голос
/ 21 июня 2010

Хорошо ... Вы должны написать код для обработки этих нажатий клавиш и преобразовать их в WM_COMMAND сообщения.Традиционный способ сделать это - определить таблицу акселераторов и обработать их, используя TranslateAccelerator() - но, конечно, вы можете делать это так, как вам нравится ... Просто убедитесь, что вы пользуетесь клавишамив сочетании с клавишами, которые вы подчеркиваете!

Вы также можете найти эту статью КБ полезной: Как использовать клавиши ускорения в модальном диалоговом окне в Visual C ++ ... Или, для более-depth (и без MFC) взгляните на реализацию пользовательской обработки сообщений в диалогах, ознакомьтесь со статьями Рэймонда Чена о диспетчере диалогов, в частности, часть 4: диалоговый цикл и часть 9: пользовательские ускорителидиалоговые окна (но если серьезно, прочитайте все это, вы знаете, что хотите ...)

1 голос
/ 21 июня 2010

Звуковой сигнал указывает, что команда не обрабатывается никаким окном в вашем приложении.

Поскольку вы создали панель инструментов динамически, я думаю, что окно панели инструментов не настроено должным образом как дочернее окновашего главного окна (т. е. его родитель и окно владельца не заданы).

Для проверки: нажмите на панель инструментов, чтобы она была в фокусе, затем нажмите Alt- и она должна работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...