5

调用时:

AfxMessageBox(strMsg, MB_YESNO);

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

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

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

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

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

4

2 回答 2

4

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

于 2009-04-30T23:06:33.970 回答
1

不是这样,但 Hans Dietrich 的免费XMessageBox是标准消息框的功能非常丰富的扩展。你可能想要你检查一下。

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

编辑:回答您的评论:

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

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

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

于 2009-05-05T21:21:34.833 回答