от
Я застрял: как я могу предотвратить рассмотрение виртуальной клавиши Shift во время перевода акселератора? Например, если моя таблица акселераторов содержит одну запись Ctrl A (например, чтобы выделить все в текущем окне, находящемся в фокусе), то я бы хотел, чтобы соответствующая команда обнаруживалась при нажатии Ctrl A, а также если бы Ctrl Shift Нажата клавиша A (но, напротив, я все же хочу, чтобы клавиша Alt сыграла свою роль, поэтому Ctrl Shift A не соответствует моей команде). Этот пост не помог. Я думаю, что я вызываю функцию
TranslateAccelerator
, пока я все еще в цикле сообщений (см. Код ниже и исправьте меня, если я ошибаюсь). Я попытался перехитрить Windows, получив текущее состояние клавиатуры, когда я вижу сообщение
WM_KEYDOWN
, вручную изменить статус виртуальной клавиши Shift на «не нажата», выполнить перевод акселератора и отменить изменения, внесенные мной вручную. В коде:
BOOL CHexaEditor::PreTranslateMessage(PMSG pMsg){
    // pre

Пока безуспешно, любая помощь высоко ценится. Спасибо :-)
    

        

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Итак, правильный ответ (спасибо ybungalobill выше):
BOOL CHexaEditor::PreTranslateMessage(PMSG pMsg){
    // pre
    
...