【发布时间】:2010-10-23 16:00:36
【问题描述】:
我们有一个使用 WinAPI 的 C 语言编写的遗留应用程序。我们想在我们的一些对话框中添加一个“全部是”按钮。不幸的是,现有的 MessageBox 功能不允许自定义按钮或按钮标题。
最好的方法是什么?是否有一个巧妙的技巧可以轻松添加自定义按钮?还是我们应该创建自己的 MessageBox 替代品?
【问题讨论】:
-
嗯,创建一个按钮并给它一个标题“Yes To All”?我认为你需要更具体一点。
-
WinAPI 中的MessageBox 显然不允许创建自己的按钮并为其提供自定义标题。那将是我尝试的第一件事。
-
可以自定义MessageBox()。在调用 MessageBox() 之前,使用 SetWindowsHookEx() 安装特定于线程的 CBT 挂钩。当钩子被触发时,你将可以访问对话框的 HWND,并且可以做任何你想做的事情(添加额外的子控件、移动控件、更改文本等)。