我正在使用基于Dialog的应用程序。 我的问题是,我想显示等待对话框,直到执行了一些数据库操作。 我用CWinThread的派生类,但问题是,当这个线程关闭时,背景(主应用程序对话框)保持停用意味着(它隐藏在另一个窗口后面)。 我在想,这是因为WaitDialog使用了CWinThread类而发生的。是否有可能在基于对话框的应用程序中从CWinThread类派生类
0
A
回答
0
另一种替代方法是使用Modeless Dialogbox,它也可以选择显示状态并在数据库操作完成时调用DestroyWindow function - 您可能需要在无模式对话框可见时禁用主窗口的某些操作,不过。
2
该问题不是基于对话框的应用程序所特有的。在多个线程中创建任何类型的窗口都很困难,建议不要这样做。你的情况听起来像你的等待对话框是模态的,而它的父对话框在另一个线程中。这更糟,可能导致线程之间的死锁。
可靠的解决方案是将等待对话框(和所有其他GUI)放入主线程,并将冗长的数据库处理放在辅助线程中。
0
从我之前回答的评论看来,在这种情况下,替代方案看起来不可行。
也许更好的方法是创建一个普通的模态“等待”对话框,在对话框的InitDialog中启动后台线程,使用定时器定期检查线程的状态,并在线程完成时结束对话框?
相关问题
- 1. 是否有可能从基类调用派生类函数
- 2. 是否有可能在派生类中
- 3. C#是否可以从派生类中调用基类属性
- 4. 是否有可能从C++中的基类方法返回派生类?
- 5. 是否有可能在编译时禁止从类中派生?
- 6. 使用在基类派生类,而派生类的基类
- 7. 如何在CWinThread派生类中正确创建CDialog框
- 8. 是否可以从基类构造函数创建派生类?
- 9. 基于文件类型的应用程序选择对话框
- 10. 从派生类到基类
- 11. 从基类INITIALISE派生类
- 12. 派生类对象是否包含基类对象?
- 13. C# - 是否有可能覆盖同一类(不是派生类)中的基类中的方法?
- 14. 是否有可能转发声明枚举类在派生类中使用?
- 15. Objective-C的派生类可能不是基类的方法
- 16. 是否可以使用“this”从派生对象的基类发出信号
- 17. 引用基类中的派生对象
- 18. 从当许多派生类型是可能的基本类型的实例获取的派生类型
- 19. CRTP:基于派生类内容在基类中启用方法
- 20. 从UIViewController派生的类中的Monotouch对话框实现
- 21. 从基类调用派生类(VB.NET)
- 22. 从基类引用派生类参数
- 23. 从基类中识别派生类
- 24. 我如何能在派生类中重用基类功能
- 25. 如果派生类包含其他方法和成员,static_cast是否可以从基类完成派生类?
- 26. 角色对象基类派生的类
- 27. 它是确定使用派生类在基类功能
- 28. 基地是否有关于从他们派生的类的任何信息?
- 29. 我们能否从抽象类的派生类中调用super.someMethod()?
- 30. 从基类访问应用于派生类中的方法的属性
哪个选项,你可以告诉我..因为,我以前使用的模型不太对话框中,执行从衍生的CWinThread,但问题是,如果我们在主对话框中单击而在处理,它显示了在崩溃的应用程序没有响应类提供选项,或者等待或关闭应用程序。 – YogeshNC
您需要在无模式对话框的HWND中设置一个HWND变量(CDialog派生类中的全局变量或成员变量),并防止用户点击主对话框中的按钮(如果此HWND不是) NULL –
我尝试了你的建议方法,要求模型少对话框,我也限制所有按钮点击,它工作正常,直到剩余几毫秒完成后台处理,它崩溃,如果我们点击任何地方(主对话框或等待对话框),而所有处理完毕的背景仅剩几毫秒。 – YogeshNC