带有自己的按钮文本的消息框

时间:2015-08-12 07:45:09

标签: windows winapi

Windows上的许多应用程序都显示了简单的消息框,只是"是" /"否"或"确定" /"取消"纽扣。通常情况下,非英语Windows会变得更糟糕。该文本是英文,但按钮在Windows'语言。

是否没有简单的API来显示带有自己的按钮标签的消息框,例如"删除"或"保持"?

3 个答案:

答案 0 :(得分:2)

确实有这样的Win32功能。它是TaskDialogIndirect。请注意,它是在Vista中引入的,因此如果您仍在尝试支持XP,那么您需要为该平台提供后备选项。

答案 1 :(得分:1)

像DavidHeffernan所说,你应该使用TaskDialogIndirect(),因为它原生支持自定义按钮。它仅适用于Vista及更高版本。

在XP及更早版本中,您可以使用MessageBox()安装线程本地SetWindowsHookEx()挂钩来自定义标准WH_CBT上的按钮标题(或实际上,您想要的任何自定义) ,或使用SetWinEventHook(),在创建对话框HWND时获取对话框,然后您可以根据需要操作对话框。您可以使用GetDlgItem()获取各个按钮的HWND(因此可以使用标准API函数/消息),和/或使用GetDlgItemText()更改其标题。每个按钮的CtrlID与单击该按钮时MessageBox()返回的值相同。

答案 2 :(得分:0)

Select into statement where source is other database替代了MessageBox,可以替代其他功能中的按钮标签。

它基本上是一个重写的MessageBox函数,它是标准Windows MessageBox函数的超集。提供完整的源代码,以便您可以根据需要轻松适应您的需求。

它是纯粹的Win32,这里没有涉及MFC。