软件点某一个按钮会进行大量的写操作,在这个过程中,我用一个XP电脑启动那种进度条作为我的等待对话框;
 
对话框我已经做好, 也有实现了XP那种进度条,现在问题是 我点那个按钮(写操作)的时候,我把我的等待对话框加入进去,这样进度条是不动的,因为在大量的写操作。所以用了UI 线程。    现在用了UI 线程 创建一个模态对话框 可以显示, 就是没办法销毁。我模态对话框上只有进度条。 我该怎么样结束这个对话框呢?或者结束这个UI线程。BOOL CWaitDlgThread::InitInstance()  
{
CProgressDlg m_dlgProgress;
    m_pMainWnd = &m_dlgProgress;  
  
    m_pcEvent = new CEvent(FALSE, TRUE, m_strEventName);  
//m_dlgProgress.Create(IDD_ProgressDlg, CWnd::GetDesktopWindow());  //非模态不能用 用了也卡主了 求解;
//m_dlgProgress.ShowWindow(SW_SHOW);    m_dlgProgress.DoModal();  //就在这一直显示进度条 没办法关了。。下面的都不会执行    delete m_pcEvent;
  
    return CWinThread::InitInstance();  
}  
  

解决方案 »

  1.   


    我那个按钮同时会调用其他按钮 其他按钮都会有写操作。想模态对话框发送什么消息可以销毁他呢?WM_CLOSE 不行哎
      

  2.   


    按照你说的 做了 还是卡住  那个对话框没出来 HANDLE Thread = CreateThread(NULL,0,ApplyOk,(LPVOID)this,0,NULL);
    CProgressDlg dlg;
    dlg.Create(IDD_ProgressDlg,NULL);
    dlg.ShowWindow(SW_SHOW);
    WaitForSingleObject(Thread,10000);
    dlg.DestroyWindow();
      

  3.   

    如果想显示一个提示框,通常是在主线程用一个模态对话框,然后另开线程做后台处理,处理完后发个自定义的消息给主线程,把模态对话框关掉。http://topic.csdn.net/u/20090304/09/66907273-1C3A-4FBC-B669-DF78A3B5C298.html
      

  4.   

    要用非模态的,然后发送线程消息销毁对话框.
    PostThreadMessage