在我维护的软件中,我计划很早以前就按照Microsoft UI指南的建议,用MessageBox
替换旧的TaskDialog
。
我需要解决的主要问题如下:
可以通过按Esc键来关闭通过MessageBox(... ,MB_OK)
调用的旧消息框(因此仅包含一个OK按钮)。
但是仅按OK键的TaskDialog
不能通过按Esc来取消。这可能会对用户体验产生负面影响。
我尝试通过TaskDialogIndirect
字段使用pfCallback
,但是如果任务对话框中没有“取消”按钮,则甚至不会调用回调函数。
有什么想法可以做,以便Esc消除此类任务对话框?
答案 0 :(得分:3)
关于TASKDIALOGCONFIG
结构的MSDN文档对TDF_ALLOW_DIALOG_CANCELLATION
标志(dwFlags
成员)进行了以下说明:
表示即使在 dwCommonButtons 或 pButtons <中未指定取消按钮,也可以使用Alt-F4,Escape和标题栏的关闭按钮关闭对话框。 / strong>成员。
此标志还将为对话框提供系统菜单(Alt + Space),因此您也可以通过按Alt + Space和系统菜单的“关闭”(Close)项目中带下划线的字符来关闭对话框。