软件点某一个按钮会进行大量的写操作,在这个过程中,我用一个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();
}
对话框我已经做好, 也有实现了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();
}
我那个按钮同时会调用其他按钮 其他按钮都会有写操作。想模态对话框发送什么消息可以销毁他呢?WM_CLOSE 不行哎
按照你说的 做了 还是卡住 那个对话框没出来 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();
PostThreadMessage