2009-04-30 101 views
4

当调用:如何启用AfxMessageBox是/否(MB_YESNO)“关闭”按钮? (右上角的“X”)

AfxMessageBox(strMsg, MB_YESNO); 

一个消息框与按钮“是”和“否”的显示。但是右上角的“X”(关闭按钮)被禁用,按ESC不起作用。

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

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

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

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

回答

4

AfxMessageBox()在内部调用MessageBox()。所以,不,你不能在没有使用MB_YESNOCANCEL的情况下获得你想要的行为,而不使用添加按钮的MB_YESNOCANCEL ...

1

不是sre如果那样做,但是Hans Dietrich的免费XMessageBox是标准消息框的一个功能非常丰富的扩展。你可能想哟检查出来。

此外,我不太明白为什么你不想要一个取消按钮,但想要一个UI元素,但没有完全一样明确。

编辑:回答您的评论:

如果“不”是“取消”,那么我想互换“不”是一个坏标签的选择。例如:Q通过DeleteFolder()函数询问:

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

OTOH,“删除文件?”看起来像按钮应该是/否。但我更喜欢OK/Cancel。因为您要求用户确认,而不是来自用户的更多信息。在这种情况下,使用Escape键/红十字工作当然是一个优点。

+1

我认为当问题是“你确定要删除项目X”时,“取消”按钮是多余的,因为它与单击“否”按钮相同。 ESC适合喜欢使用键盘的用户。启用关闭按钮“X”只是有意义的,因为它允许回答“否”,但在同一个对话框的不同位置。如果按钮“否”和“取消”彼此相邻并且它们相同,则两者都没有意义。 – rec 2009-05-06 18:57:01

相关问题