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

时间:2009-04-30 22:52:29

标签: mfc windows-vista dialog messagebox

致电:

AfxMessageBox(strMsg, MB_YESNO);

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

如果不是这样,那么Hans Dietrich的免费XMessageBox是标准消息框的功能丰富的扩展。你可能想要看看它。

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

编辑:回答您的评论:

如果'否'可以与'取消'互换,那么我认为'否'是一个糟糕的标签选择。例如:由DeleteFolder()函数询问的问题:

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

OTOH,“删除文件?”看起来按钮应该是/否。但我更喜欢OK / Cancel。因为您要求用户确认,而不是来自用户的更多信息。在这种情况下,让Escape键/红叉工作肯定是有利的。