Отклонение TaskDialog нажатием Esc - PullRequest
1 голос
/ 26 июня 2019

В поддерживаемом мною программном обеспечении я планирую заменить старую MessageBox на TaskDialog, как это было предложено руководящими принципами Microsoft UI, уже довольно давно.

Основная проблема, которую мне нужно решить, заключается в следующем:

Старое окно сообщения, вызываемое через MessageBox(... ,MB_OK) (содержащее только кнопку ОК), можно закрыть, нажав клавишу Esc.

Но TaskDialog, содержащий только кнопку ОК, нельзя отклонить нажатием клавиши Esc. Это может оказать негативное влияние на пользовательский опыт.

Я пытался использовать TaskDialogIndirect, используя поле pfCallback, но если в диалоге задачи нет кнопки Отмена, функция обратного вызова даже не вызывается.

Есть какие-нибудь идеи, что можно сделать, чтобы Esc закрыл диалог с такой задачей?

1 Ответ

3 голосов
/ 27 июня 2019

В документации MSDN для структуры TASKDIALOGCONFIG говорится следующее о флаге TDF_ALLOW_DIALOG_CANCELLATION (элемент dwFlags):

Указывает, что диалоговое окно должно быть закрыто с помощью Alt-F4, Escape и кнопки закрытия строки заголовка, даже если кнопка отмены не указана ни в dwCommonButtons , ни в pButtons участники.

Этот флаг также дает диалоговому окну системное меню (Alt + Пробел), поэтому вы также можете закрыть его, нажав Alt + Пробел и подчеркнутый символ в пункте «Закрыть» системного меню.

...