通过按Esc

时间:2019-06-26 15:58:00

标签: winapi taskdialog

在我维护的软件中,我计划很早以前就按照Microsoft UI指南的建议,用MessageBox替换旧的TaskDialog

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

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

但是仅按OK键的TaskDialog不能通过按Esc来取消。这可能会对用户体验产生负面影响。

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

有什么想法可以做,以便Esc消除此类任务对话框?

1 个答案:

答案 0 :(得分:3)

关于TASKDIALOGCONFIG结构的MSDN文档对TDF_ALLOW_DIALOG_CANCELLATION标志(dwFlags成员)进行了以下说明:

  

表示即使在 dwCommonButtons pButtons <中未指定取消按钮,也可以使用Alt-F4,Escape和标题栏的关闭按钮关闭对话框。 / strong>成员。

此标志还将为对话框提供系统菜单(Alt + Space),因此您也可以通过按Alt + Space和系统菜单的“关闭”(Close)项目中带下划线的字符来关闭对话框。