【问题标题】:How to enable an AfxMessageBox Yes/No (MB_YESNO) "close" button? (upper right corner "X")如何启用 AfxMessageBox 是/否(MB_YESNO)“关闭”按钮? (右上角“X”)
【发布时间】:2010-10-23 00:13:32
【问题描述】:

调用时:

AfxMessageBox(strMsg, MB_YESNO);

显示带有“是”和“否”按钮的消息框。但是右上角的“X”(关闭按钮)是禁用的,按ESC没有效果。

这是因为唯一有效的结果是 IDYES 和 IDNO,而不是 IDCANCEL。

是否有快速启用此行为的方法? 我想避免的:

  • 为此创建自定义对话框。
  • 具有是/否/取消按钮。

在vista中,删除文件时,要求确认的对话框只有“是”和“否”,也可以用关闭按钮或ESC取消。我猜这是一个自定义对话框。

【问题讨论】:

    标签: mfc windows-vista dialog messagebox


    【解决方案1】:

    AfxMessageBox() 只是在内部调用MessageBox()。所以,不,如果不使用添加按钮的 MB_YESNOCANCEL,您将无法在此处获得所需的行为...

    【讨论】:

      【解决方案2】:

      不知道,但 Hans Dietrich 的免费 XMessageBox 是标准消息框的功能非常丰富的扩展。你可能想看看。

      另外,我不太明白为什么你不想要一个取消按钮,却想要一个功能相同但不那么明确的 UI 元素。

      编辑:回答您的评论:

      如果“否”可以与“取消”互换,那么我认为“否”是一个不好的标签选择。例如:DeleteFolder() 函数询问的 Q:

      “我也应该清空子文件夹吗?”。显然,no 和 Cancel/Escape 的含义不同。

      OTOH,“删除文件?”看起来按钮应该是是/否。但我更喜欢确定/取消。因为您要求用户确认,而不是要求用户提供更多信息。在这种情况下,使用 Escape 键/红十字肯定是一个加分项。

      【讨论】:

      • 我认为当问题是“您确定要删除项目 X”时,“取消”按钮是多余的,因为它与单击“否”按钮的作用相同。 ESC适用于喜欢使用键盘的用户。启用关闭按钮“X”才有意义,因为它允许回答“否”,但在同一个对话框中的不同位置。如果按钮“否”和“取消”是相邻的并且它们的作用相同,那么两者都没有意义。
      • 问题是“否”和“取消”是不同的答案。好的,在某些情况下它们可能相似,但不能保证。 “空文件夹”功能的假示例:“我还应该清空子文件夹吗?”,是/否。取消不会删除任何内容。是和否删除一些东西。
      猜你喜欢
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 2020-02-08
      • 2013-09-21
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多