繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM