我怎样才能创造一个对所有人来说是“按钮使用WinAPI?

StackOverflow https://stackoverflow.com/questions/820633

  •  03-07-2019
  •  | 
  •  

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

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

有帮助吗?

解决方案 4

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

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

其他提示

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

它允许您显示标准 MB_OKCANCEL / MB_YESNO / MB_OK -type MessageBox ,并带有选项永远不要再显示它,通过指定那种情况下的默认选项。

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

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

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

  

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top