VC ++: как запретить esc закрывать диалоговое окно (не mfc)

Как я могу запретить esc закрывать диалоговое окно?

Я искал эту тему, но все, что я нашел, было для MFC (вы можете перезаписать функцию PreTranslateMessage в MFC). но моя программа написана на Windows API, не на MFC.

Я попытался перехватить все сообщения клавиатуры в процедуре диалога, но ни одно из них не работает. Я также пробовал использовать подклассы в диалоговом окне, но это тоже не сработало.

Как я мог это сделать? Спасибо.


person Community    schedule 19.03.2009    source источник


Ответы (2)


Вы можете легко определить, достаточно ли это в системном меню - посмотрите раздел «возвращаемое значение» в эту страницу MSDN, чтобы узнать, как это сделать.

Если вы не можете определить, является ли это клавишей ESCAPE или кнопкой, вы всегда можете обойти это, используя другой идентификатор для вашей кнопки «Отмена».

person Head Geek    schedule 20.03.2009

Обработайте WM_COMMAND и проверьте наличие IDCANCEL. Тогда не передавайте управление оконной процедуре по умолчанию.

person Ivan Krechetov    schedule 19.03.2009
comment
При таком подходе вы также отключите закрытие диалогового окна с помощью кнопки X в строке заголовка или из его системного меню. - person ahmd0; 27.07.2019