根据MessageBox 文档:
返回值
输入:int
如果消息框中有“取消”按钮,则该函数返回 如果按下ESC键或取消,则为IDCANCEL值 按钮被选中。 如果消息框没有“取消”按钮,请按 ESC无效。
如果我希望有一个 没有取消按钮 的框,但我想区分确定和关闭/ ESC?
答案 0 :(得分:1)
MessageBox()
不支持您要查找的行为。您必须使用SetWindowsHookEx()
或SetWinEventHook()
直接挂接对话框,以便检测它是否已关闭。
请改用TaskDialogIndirect()
。它有一个TDF_ALLOW_DIALOG_CANCELLATION
标志:
表示即使在 dwCommonButtons 或<中没有指定取消按钮,也可以使用Alt-F4,Escape和标题栏的关闭按钮关闭对话框。 strong> pButtons 成员。
所有这些条件都将返回IDCANCEL
。
答案 1 :(得分:0)
如果我希望有一个没有取消按钮的盒子,但我想区分OK和关闭/ ESC怎么办?
标准对话框不提供此类行为,因为它的设计非常糟糕。作为一个原则,GUI应该允许通过鼠标或键盘执行操作。只能通过键盘访问的隐藏动作是设计不佳的标志。
如果你真的想要进行这样的对话,你必须自己实现它。但是,你不应该。使用确定和取消按钮显示对话框。