我有一个线程,我通过一个窗口的HWND,它发布消息并更新进度条。然而,用户可以转到另一个窗口(模态),我也想显示该线程的进度。传递初始HWND显然是直截了当的,但是如何在线程运行后转移线程将消息发布到新窗口?这是一个c ++工作线程。我使用的是Windows 7,MFC,C ++。
答案 0 :(得分:0)
反过来说。让进度窗口从工作线程获取类的地址,并定期询问它的进度。例如,使用计时器。这样,您就可以拥有所需的进度窗口。
答案 1 :(得分:0)
有两种方法。一个是Daniel的方式,它从UI窗口轮询进度信息。您所需要的只是线程实现类(或等效的自由函数)中的线程安全的“int GetProgressPercent()const”成员。
另一种方法是在工作线程中使用PostMessage或PostThreadMessage作为进度,另一端处理调整条形的消息。
任何一个的主要问题是处理生命周期问题,防止在对象或HWND实际消失时调用它们。为此,PostThreadMessage方式可能是最安全的基线,因为主线程应该在那里并管理所有其他线程 - 并跟踪程序的整体状态,能够对实时窗口进行有意义的调度或什么也不做。但它也是最复杂的。