如何使用WinAPI创建“Yes To All”按钮?

时间:2009-05-04 15:43:10

标签: winapi dialog

我们有一个使用WinAPI编写的遗留应用程序。我们想在几个对话框中添加“Yes to All”按钮。不幸的是,现有的MessageBox功能不允许自定义按钮或按钮标题。

最好的方法是什么?是否有一个光滑的黑客轻松添加自定义按钮?或者我们应该创建自己的MessageBox替代品吗?

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

自Windows 2000以来,WinAPI中还有另一种消息框。它是SHMessageBoxCheck

通过指定默认选项,您可以显示标准MB_OKCANCEL / MB_YESNO / MB_OK - 类型MessageBox,并选择“永不再显示”那个案子是。

也许这不是你想要的,但它与Windows用户界面相当一致。

在Vista中,大多数shell的“Yes to all”对话框实际上都是这样工作的 - 没有额外的按钮说“是/否全部” - 而是“在所有项目上执行所选操作”复选框。

然而,文档中的注释让我担心:

  

此功能可通过Microsoft Windows XP和Windows Server 2003获得。它可能会在后续版本的Windows中更改或不可用。

答案 2 :(得分:2)

您可能还需要处理文字换行,使其与MessageBox类似。与默认GUI字体相比,MessageBox使用不同的字体。并且不要忘记在弹出对话框时播放声音:)

答案 3 :(得分:1)

我们刚刚创建了自己的DIALOGEX替换资源模板,然后只需调用DialogBox()并检查返回值。

参考:http://msdn.microsoft.com/library/ms644996(v=VS.85).aspx#modal_box