c – 如何在单独的线程中使用进度条创建MFC对话框?
我的应用程序可能需要一段时间才能连接到数据库.这个连接是用一个库函数调用进行的,即我不能把进度更新放在那里,并进行回调或类似的回调.
我的想法是在连接到数据库之前在单独的线程中创建一个具有进度条的对话框.此对话框将持续更改CProgressCtrl :: StepIt()的进度状态,以便用户看到发生的情况. 让我画一张照片: CMyApp:: ProgressThread InitInstance() . | . | . +-Create Dialog-+ | | | Animate Connect Progress to Bar DB | | | +-Destroy Dlg---+ | . | . 那可能吗?如果是,怎么样? 也许整个事情也可以使用计时器.可能会简单得多,但是我也无法做到这一点. >我知道CProgressCtrl :: SetMarquee()可能完全正是我需要的,但我不能使用它,因为该应用程序没有Unicode支持. 更新2 >在主线程中,我创建一个具有连接参数,结果标志和线程运行标志的结构体.后者最初设置为true. 缺点:将鼠标移到窗口不起作用.看不见因此,不能使用取消按钮或其他交互式对话元素.但是,我可以生活在这里. 既然你喜欢这个图表,现??在看来是如此: CMyApp:: WorkerThread InitInstance() . | . | . Create Dialog . | . +-Start Thread--+ | | | Connect Animate to Progress DB Bar | | | +-Thread Ends---+ | . Destroy Dlg . | . 解决方法
将DB连接逻辑移到单独的线程上仍然更安全.使用对话框线程上的DB,您将能够重新绘制进度条,但不能在对话框中重新绘制其他控件.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |