如何用多线程实现上述功能。用哪CEvent吗?还是其它什么方法

解决方案 »

  1.   

    用不着多线程吧...
    点确定的时候hide主对话框,并且DoModal出你的小对话框...
    估计你要考虑的应该是主对话框跟小对话框的数据通信问题...
      

  2.   

    恩 可以往小对话框发消息来控件进度条滚动
    用多线程的话 用UI线程简单点
    自己写个类 继承CWinThread 然后在InitInstance里创建 在Run()里更新滚动
    不过一样要考虑通信问题
      

  3.   

    在work线程结束前,发送自定义消息给进度显示小对话框就行了吧
      

  4.   

    大家能否说得稍微详细一点?呵呵,我是初学多线程。
    可能我把问题也没有说太详细。
    进度条的功能是显示计算的进程,计算完了之后还要在视图区。
    我的大致流程是:
    1,建立SDI。
    2,点击菜单栏后出现一个对话框,选择一个文件出来。
    3,点击确定后,有进度条的小对话框出现。
    4,计算完成后,小对话框消失。
    5,图形显示。
    因此现在主要是通过多线程进行计算,进度条的显示。
    谢谢大家这么快给我回复!
      

  5.   

    我原来不想用多线程的,因为计算也就几秒的时间。所以用了Sleep等待,结果小对话框上的文字显示不出来,就像死机一样。
      

  6.   

    不清楚你哪里不会,小窗口用DoModal显示,创建线程时将小窗口的指针作为参数传给线程,由线程直接控制进度条,跑完后给小窗口发个WM_CLOSE消息就可以了。
      

  7.   

    自己实现一个基于CDialog的的对话框类CMyDialog,里面添加进度条控件,当选择文件的对话框点击OK并返回以后,你可以创建2个线程:
    线程1:创建CMyDialog的对象a,然后设置父窗体的句柄为自己的应用程序主窗体,然后再a.DoModal().
    线程2:处理你的业务,根据业务进度定期发送自己定义的消息比如MSG_JOB_PROGRESS,第一个参数表示进度1-100,然后在上面的对话框中定义这个消息处理函数,主要负责根据进度信息来更新进度条。当收到进度为100时,表示任务已经完成,这身对话框就可以退掉了,比如运行CDialog::OnOK()。
      

  8.   

    LS先别急下结论,自己试试,不要以XX书上说的为依据。