C++ MessageBox-框没有取消按钮时返回值
根据文件: 返回值 类型:int 如果消息框中有“取消”按钮,则函数返回 按下ESC键或取消键时的IDCANCEL值 按钮被选中如果messagebox没有取消按钮,则按 ESC无效。 如果我希望有一个没有取消按钮的框,但我想区分OK和close/ESC,该怎么办 如果我希望有一个没有取消按钮的框,但我想区分OK和close/ESC,该怎么办 标准对话框不提供这种行为,因为它的设计非常糟糕。原则上,GUI应该允许通过鼠标或键盘执行操作。只有键盘才能访问的隐藏动作是设计拙劣的标志 如果你真的想创建这样一个对话框,你必须自己实现它。然而,你不应该这样做。使用“确定”和“取消”按钮显示对话框C++ MessageBox-框没有取消按钮时返回值,c++,winapi,messagebox,C++,Winapi,Messagebox,根据文件: 返回值 类型:int 如果消息框中有“取消”按钮,则函数返回 按下ESC键或取消键时的IDCANCEL值 按钮被选中如果messagebox没有取消按钮,则按 ESC无效。 如果我希望有一个没有取消按钮的框,但我想区分OK和close/ESC,该怎么办 如果我希望有一个没有取消按钮的框,但我想区分OK和close/ESC,该怎么办 标准对话框不提供这种行为,因为它的设计非常糟糕。原则上,GUI应该允许通过鼠标或键盘执行操作。只有键盘才能访问的隐藏动作是设计拙劣的标志 如果你真的想创建
MessageBox()
不支持您正在查找的行为。您必须使用setWindowshookx()
或SetWinEventHook()
直接钩住对话框,才能检测到它被关闭
改用。它有一个TDF\u允许\u对话框\u取消
标志:
指示即使在dwCommonButtons或pButtons成员中未指定取消按钮,也应能够使用Alt-F4、Escape和标题栏的关闭按钮关闭对话框
所有这些条件都将返回
IDCANCEL
如果按[ESC]无效,您想用什么区别?如果使用[Enter]或Ok按钮以外的任何操作来关闭对话框,则返回值不同于测试中可检测的IDOK
@IInspectable,无论用户点击Ok或Close,返回值似乎总是IDOK(1)
。这听起来像是一个非常奇怪和不直观的用户设计。你想干什么?