Windows多线程与对话框

 

Windows 多线程与对话框
   

 

Windows的对话框是获取信息输入的主要手段,增加线程则是获得更好UI响应的重要方式。由于Windows在处理对话框时进行线程调度的特殊性,如果不对此加以特别注意,增加线程可能不能带来UI响应的改善。

1         跨线程创建对话框

1.1      需求

有这样的应用场景:创建非模态对话框后需要马上做些耗时的工作,而同时又希望能够立刻在对话框上操作,所以,希望让非模态对话框工作在单独的线程上。

1.2      方案

主线程启动一个UI线程,并且,让这个线程创建非模态对话框。

想法是:既然用单独的线程创建了对话框,所以,主线程在创建UI线程后,就可以继续自己其他耗时的工作了。

1.3      实现

用一个简单的例子程序来试验这个方案:在VC++中创建一个基于SDIMFC应用程序,在其CView派生类中处理“Call”菜单命令,创建派生自CWinThreadUI线程,在这个UI线程初始化过程中创建一个对话框。

1.3.1      单独的UI线程创建对话框

实现一个派生自CWinThreadUI线程类,其中最关键的是CreateMyDlgDestroyMyDlg函数。

类如下

class UIWorker : public CWinThread

{

    DECLARE_DYNCREATE(UIWorker)

protected:

    UIWorker();       // protected constructor used by dynamic creation

 

// Attributes

public:

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值