win32:更改MessageBox文本?

时间:2009-04-22 05:30:27

标签: windows winapi messagebox

我的程序有多个线程。我正在使用messagebox向用户显示信息。无论如何(或消息框的替代方案)我可以让另一个线程更新/更改消息框显示文本,而消息框仍在屏幕上并且可由用户看到?

3 个答案:

答案 0 :(得分:5)

如果您使用的是标准的Win32消息框,我不相信一旦显示该框,您就无法更改文本(您输入模态消息泵)。

我建议你创建一个自己的窗口来监听来自其他线程的消息/更新。这样你就掌控了。

答案 1 :(得分:1)

通过GetCurrentThreadId()和SetWindowsHookEx()使用特定于线程的钩子,您可以挂钩MessageBox()内部接收的消息,以及访问对话框的主窗口句柄,然后使您可以访问所有的对话框的子控件。然后,您可以根据需要自定义对话框及其控件。这种技术通常用于实现自闭对话框(在引入MessageBoxTimeout()之前),自定义按钮的文本等。

答案 2 :(得分:0)

我不相信有直接的方法可以做到这一点,你可能会尝试获得窗口处理,但这太乱了。您最好的选择是创建自己的对话框,以便您可以完全控制它。