Ускорители обычно используются для команд прикладного уровня - например. Ctrl-N , чтобы открыть новый документ. Если эта комбинация клавиш специфична для этого HWND
- например. если это клавиатурная команда для конкретного элемента управления, то обработка ее в элементе управления - это то, что нужно.
Мое предположение относительно того, что происходит в вашем коде, выглядит следующим образом: когда вы нажимаете Ctrl + Enter, Windows генерирует два WM_KEYDOWN
сообщения; один для CTRL и один для ENTER. когда вы получаете один для CTRL , вы отображаете окно сообщения, и теперь его внутренний цикл сообщений вступает во владение - он будет получать любые дальнейшие данные, пока не будет отклонен.
Попробуйте отбросить первый MessageBox
(вы все равно знаете, что достигаете этой точки), и просто посмотрите, не получил ли второй удар. Или используйте метод диагностики (например, OutputDebugString()
), который не будет мешать вводу.