我的程序有多个线程。我正在使用messagebox向用户显示信息。无论如何(或消息框的替代方案)我可以让另一个线程更新/更改消息框显示文本,而消息框仍在屏幕上并且可由用户看到?
答案 0 :(得分:5)
如果您使用的是标准的Win32消息框,我不相信一旦显示该框,您就无法更改文本(您输入模态消息泵)。
我建议你创建一个自己的窗口来监听来自其他线程的消息/更新。这样你就掌控了。
答案 1 :(得分:1)
通过GetCurrentThreadId()和SetWindowsHookEx()使用特定于线程的钩子,您可以挂钩MessageBox()内部接收的消息,以及访问对话框的主窗口句柄,然后使您可以访问所有的对话框的子控件。然后,您可以根据需要自定义对话框及其控件。这种技术通常用于实现自闭对话框(在引入MessageBoxTimeout()之前),自定义按钮的文本等。
答案 2 :(得分:0)
我不相信有直接的方法可以做到这一点,你可能会尝试获得窗口处理,但这太乱了。您最好的选择是创建自己的对话框,以便您可以完全控制它。