1

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

4

3 回答 3

5

如果您使用的是标准的 Win32 消息框,我认为一旦该框已显示(您输入模式消息泵),就没有任何方法可以更改文本。

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

于 2009-04-22T05:33:42.520 回答
2

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

于 2009-06-04T02:07:59.743 回答
0

我不相信有直接的方法可以做到这一点,您可能可以尝试获取窗口句柄,但这太麻烦了。最好的办法是创建自己的对话框,以便您完全控制它。

于 2009-04-22T12:11:47.507 回答