Windows上的许多应用程序都显示了简单的消息框,只是"是" /"否"或"确定" /"取消"纽扣。通常情况下,非英语Windows会变得更糟糕。该文本是英文,但按钮在Windows'语言。
是否没有简单的API来显示带有自己的按钮标签的消息框,例如"删除"或"保持"?
答案 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。