MessageBox-当框没有“取消”按钮时返回值
MessageBox - return value when box has no Cancel button
根据MessageBox文档:
返回值
类型:int
如果消息框中有"取消"按钮,则函数返回如果按下ESC键或取消,则为IDCANCEL值按钮如果消息框没有"取消"按钮,请按ESC无效
如果我想要一个没有"取消"按钮但我想区分"确定"answers"关闭/ESC"的框,该怎么办?
MessageBox()
不支持您要查找的行为。您必须使用SetWindowsHookEx()
或SetWinEventHook()
直接挂接对话框,才能检测到它正在关闭。
请改用TaskDialogIndirect()
。它有一个TDF_ALLOW_DIALOG_CANCELLATION
标志:
指示即使dwCommonButtons或pButtons成员中未指定取消按钮,也应能够使用Alt-F4、Escape和标题栏的关闭按钮关闭对话框。
所有这些条件都将返回IDCANCEL
。
如果我希望有一个没有"取消"按钮的框,但我想区分"确定"answers"关闭/ESC",该怎么办?
标准对话框不提供这种行为,因为它的设计非常糟糕。原则上,GUI应该允许通过鼠标或键盘执行操作。只有键盘才能访问的隐藏动作是设计不佳的标志。
如果你真的想制作这样一个对话框,你必须自己实现它。但是,你不应该。在对话框中显示"确定"answers"取消"按钮。
相关文章:
- 从python中调用C++函数并获取返回值
- 为什么模板类中的对象不能返回值
- 返回值优化:显式移动还是隐式
- lock_guard是否保护返回值
- 调用CreateProcess()并获取字符串的返回值
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 查找 GCD:并非所有控制路径都返回值
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 如何从 std::thread 返回值
- 将返回值从 exe 传递到 bat,并将其传递给 C# 中的进程
- 方法错误"not all control paths return a value"和方法不返回值
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 对fread的返回值感到困惑
- 程序不向函数返回值
- 如何在另一个函数中使用返回值作为参数?
- 如何让多个Qt按钮返回每个不同的值
- QDialog:需要按下按钮或返回值
- MessageBox-当框没有“取消”按钮时返回值