MessageBox-当框没有“取消”按钮时返回值

MessageBox - return value when box has no Cancel button

本文关键字:按钮 返回值 取消 MessageBox-      更新时间:2023-10-16

根据MessageBox文档:

返回值

类型:int

如果消息框中有"取消"按钮,则函数返回如果按下ESC键或取消,则为IDCANCEL值按钮如果消息框没有"取消"按钮,请按ESC无效

如果我想要一个没有"取消"按钮但我想区分"确定"answers"关闭/ESC"的框,该怎么办?

MessageBox()不支持您要查找的行为。您必须使用SetWindowsHookEx()SetWinEventHook()直接挂接对话框,才能检测到它正在关闭。

请改用TaskDialogIndirect()。它有一个TDF_ALLOW_DIALOG_CANCELLATION标志:

指示即使dwCommonButtonspButtons成员中未指定取消按钮,也应能够使用Alt-F4、Escape和标题栏的关闭按钮关闭对话框。

所有这些条件都将返回IDCANCEL

如果我希望有一个没有"取消"按钮的框,但我想区分"确定"answers"关闭/ESC",该怎么办?

标准对话框不提供这种行为,因为它的设计非常糟糕。原则上,GUI应该允许通过鼠标或键盘执行操作。只有键盘才能访问的隐藏动作是设计不佳的标志。

如果你真的想制作这样一个对话框,你必须自己实现它。但是,你不应该。在对话框中显示"确定"answers"取消"按钮。