按 Esc 键关闭 TaskDialog

Dismissing a TaskDialog by pressing Esc

在我维护的软件中,我计划按照 Microsoft UI 指南的建议将旧的 MessageBox 替换为 TaskDialog

我需要解决的主要问题如下:

通过 MessageBox(... ,MB_OK) 调用的旧消息框(因此仅包含一个“确定”按钮)可以通过按 Esc 键关闭。

但是仅包含“确定”按钮的 TaskDialog 无法通过按 Esc 键关闭。这可能会对用户体验产生负面影响。

我尝试使用 TaskDialogIndirect 使用 pfCallback 字段,但如果任务对话框中没有取消按钮,则甚至不会调用回调函数。

有什么想法可以让 Esc 关闭这样的任务对话框吗?

TASKDIALOGCONFIG 结构的 MSDN 文档对 TDF_ALLOW_DIALOG_CANCELLATION 标志(dwFlags 成员)的描述如下:

Indicates that the dialog should be able to be closed using Alt-F4, Escape, and the title bar's close button even if no cancel button is specified in either the dwCommonButtons or pButtons members.

这个标志还给对话框一个系统菜单(Alt+Space),所以你也可以通过按Alt+Space和系统菜单的[=19=中带下划线的字符来关闭它] 物品。