关闭其他线程的对话框后无法从主窗口聚焦
Can't focus from main window after closing dialog from other thread
我在CWinApp::InitInstance()
中创建了一个新CWindThread
。在该线程中,我创建了一个对话框(用于在该对话框中显示进度条)。
完成InitInstance()
后,我通过从对话框中调用DestroyWindow()
来关闭对话框,但应用程序正在从主窗口失去焦点。
我曾经AfxGetMainWnd()->SetActiveWindow();
来设置主窗口的焦点,但它不起作用。
关闭对话框后如何将焦点返回到主窗口?
没有真正的好方法可以做到这一点。焦点是按线程设置的。因此,没有对所有窗口的"焦点"。
您唯一的机会是设置新的前台窗口,该窗口属于具有 SetForegorundWindow 的另一个线程。在同一应用程序中,这应该不受限制地工作。
如果它不起作用,则需要"同步"两个消息队列。这是由AttachThreadInput完成的。如果两个消息队列都已经附加,则直接设置焦点没有问题。但是应用程序的行为会改变...请阅读我链接的功能的文档。
显示模式弹出窗口时,用户无法与所有者窗互的原因是它被禁用。销毁模式窗口时,必须在销毁弹出窗口之前注意重新启用所有者窗口,因为窗口无法激活禁用的窗口。这是弹出窗口重新激活错误窗口的常见原因。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- Qt:当主窗口被模式QDialog阻止时,如何聚焦从主窗口创建的无模式QDialog
- 当窗口聚焦时,OpenGL程序不会循环
- 关闭其他线程的对话框后无法从主窗口聚焦
- 确定窗口是否聚焦/活动/前景
- 捕获鼠标但未聚焦窗口时捕获键盘事件(Win32)
- 无法对Qt5中的窗口小部件进行聚焦和输入