![]() |
1
2
首先,我同意其他海报的观点,在主UI线程上显示对话框可能更好。
注意,(2)不应该是必须的,前提是你有(1),但是你提到了MFC,我不记得它的具体行为。它有自己的模式对话框实现,可能与Win32不完全匹配。如果你幸运的话,(1)和(3)就足够了。 |
![]() |
2
2
没有可靠的方法在多个线程之间传播GUI模式。每个窗口都由一个通过
模态是通过首先启用对话框窗口,然后禁用其父窗口来实现的。第一步是安全的,而第二步尝试从不是窗口所属线程的线程禁用窗口。因为en-/禁用windows会修改通过
建议的解决方案是将GUI限制在单个线程中,并从工作线程到GUI线程进行通信,让它代表工作线程执行用户交互。最简单的方法就是打电话 SendMessage 从工作线程到块,直到GUI线程的消息处理程序返回。如果在显示对话框时工作线程应继续运行,则可以使用 PostMessage 而是使用 PostThreadMessage 或者向同步对象发送信号,比如 Event Object . |
![]() |
3
1
虽然我不知道Server2003上对话框处理的细节,但在主线程上最简单的解决方法是使用自定义窗口消息do
|
![]() |
4
0
|
![]() |
cyber101 · vc++未声明的标识符,尽管其已声明 7 年前 |
![]() |
areum · 如何在列表控件中创建右键单击菜单? 7 年前 |
![]() |
Rafal · 如何在MFC中的CWnd中显示CFormView? 7 年前 |
![]() |
Anton Savelyev · 在发布版本中删除类指针会导致内存问题 7 年前 |
![]() |
xtkwfn · 如何查找目录[已关闭]下的所有文件夹 7 年前 |
![]() |
Andrew Truckle · 在WPARAM中组合5个值 7 年前 |
![]() |
user3070144 · 通过全局接口表封送ActiveX 7 年前 |