[英]Message boxes with own button texts
Windows上的许多应用程序仅通过“是” /“否”或“确定” /“取消”按钮显示简单的消息框。 在非英语Windows上,文本通常是英文,但按钮以Windows的语言标记常常会变得更糟。
是否没有简单的API显示带有自己的按钮标签的消息框,例如“删除”或“保留”?
确实有这样的Win32函数。 它是TaskDialogIndirect
。 请注意,它是在Vista中引入的,因此,如果您仍在尝试支持XP,则需要为该平台提供一个后备选项。
就像DavidHeffernan所说的那样,您应该使用TaskDialogIndirect()
,因为它本身支持自定义按钮。 不过,它仅在Vista和更高版本上可用。
在XP和更早版本上,可以使用SetWindowsHookEx()
安装本地线程WH_CBT
钩子,或使用SetWinEventHook()
来获得对话框的内容,从而自定义标准MessageBox()
上的按钮标题(或实际上,您需要进行任何自定义)。创建HWND
时,您可以根据需要操作该对话框。 您可以使用GetDlgItem()
来获取各个按钮的HWND
(从而可以与它们一起使用标准API函数/消息),和/或使用GetDlgItemText()
来更改其标题。 每个按钮的CtrlID与单击该按钮时MessageBox()
返回的值相同。
Codeproject上的此项目提供了一个相当不错的替代MessageBox
,可以替换按钮标签以及其他功能。
它基本上是重写的MessageBox
函数,它是标准Windows MessageBox
函数的超集。 提供了完整的源代码,因此您可以根据需要轻松地适应您的需求。
它是纯Win32,此处不涉及MFC。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.