0

我有一个线程,我通过一个窗口的 HWND 发布消息并更新进度条。但是,用户可以转到另一个窗口(模态),我也想在其中显示该线程的进度。传递初始 HWND 显然是直截了当的,但是一旦线程运行,我如何转移线程将消息发布到新窗口?这是一个 C++ 工作线程。我正在使用 Windows 7、MFC、C++。

4

2 回答 2

0

有两种方法。一种是 Daniel 的方式,即从 UI 窗口轮询进度信息。您所需要的只是线程实现类(或等效的自由函数)中的线程安全“int GetProgressPercent() const”成员。

另一种方法是在工作线程中使用 PostMessage 或 PostThreadMessage 作为进度发生,并在另一端处理消息调整栏。

两者的主要问题是处理生命周期问题,防止在对象或 HWND 实际已经消失时调用它。为此 PostThreadMessage 方式可能是最安全的基线,因为主线程应该在那里并管理所有其他线程 - 并跟踪能够对活动窗口进行有意义的调度或什么都不做的程序的整体状态。但这也是最复杂的。

于 2013-06-09T10:52:38.827 回答
0

换个方式说吧。让进度窗口从工作线程中获取类的地址,并定期向它询问进度。以计时器为例。这样,您将能够根据需要拥有尽可能多的进度窗口。

于 2013-06-09T04:23:38.627 回答