如何转移线程以将消息发送到新窗口
How to divert a thread to post messages to a new window
我有一个线程,我传递一个窗口的HWND,在那里它发布消息并更新进度条。然而,用户可以去另一个窗口(模态),我也想显示这个线程的进度。传递初始HWND显然是直截了当的,但是我如何才能转移线程,以便在新窗口运行后将消息发布到新窗口?这是一个c++工作线程。我使用的是Windows 7,MFC, c++。
换一种方式。让进度窗口从工作线程获得类的地址,并定期向它询问进度。比如计时器。这样,你就可以有尽可能多的进度窗口。
有两种方法。一种是Daniel的方式,从UI窗口轮询进度信息。你所需要的只是在线程实现类(或等价的自由函数)中有一个线程安全的` int GetProgressPercent() const `成员。
另一种方法是在进程发生时在工作线程中使用PostMessage或PostThreadMessage,并在另一端处理调整条的消息。
两者的主要问题是处理生命周期问题,防止调用对象或HWND时,它实际上已经消失了。因此,PostThreadMessage方法可能是最安全的基准,因为主线程应该在那里并管理所有其他线程,并跟踪程序的总体状态,从而能够对活动窗口进行有意义的分派,或者什么都不做。但它也是最复杂的。
相关文章:
- 如何使用Qt在新窗口中显示视频帧
- Qt5 C++将新窗口与Qt设计器链接
- 在SFML(C++)中启动一个新窗口
- Qt将鼠标移动事件转移到新窗口
- 如何在窗口上设置使用 CreateProcess 创建的新进程的主线程的堆栈大小?
- 主窗口的新方法不可见
- 在Clion的新窗口中创建一个新项目
- Visual C 关闭文本文件和打开新的控制台窗口
- 有没有办法为使用 Boost 生成的进程创建新的控制台窗口
- 如何在Qt中打开新窗口的情况下更改UI?
- 子类别窗口窗口
- 朱奇 - 制作一个新窗口
- 设置 VLC drawable-hwnd 仍会创建一个新窗口
- 运行 SFML 图形后看不到新窗口
- 最佳地将窗口标题替换为新的 QString
- 如何在Mac上打开Carbon中的C++新窗口
- 创建一个没有父级的新Qt窗口是否也会创建一个新线程
- 获取确切的窗口区域大小 - 创建窗口窗口大小不正确
- 打开一个带有插槽的新Qt窗口
- 我如何复制一个窗口的可视内容,并把它放在一个新的窗口在win32c++