while( (dwRead = ReadFile.Read(pBuf, dwStep)) > 0 )
{//读取源文件,一次一块
//将读取的数据写入目标文件中
WriteFile.Write( pBuf, dwRead );
dwCompleteSize += dwRead;
pInfo->m_nSpeed += dwRead;
//更新进度
while(!pInfo->pUIThread->PostThreadMessage(WM_THREADINFO, 3, (LPARAM) int((dwCompleteSize*1.0 / dwTotalSize) * 100)))
{
Sleep(10);
}
}
//完成
delete pBuf;
//关闭文件
ReadFile.Close();
WriteFile.Close();
//发送结束消息,用于关闭进度显示模块
if (!pInfo->pUIThread->PostThreadMessage(WM_THREADINFO, 10, 1))
{
Sleep(10);
}
//pInfo->KillTimer(1);
//pInfo->KillTimer(2);
pInfo->m_stTip.SetWindowText("复制完成!");在一个工作线程函数里面,发送用户界面消息;用户界面处理函数如下
//显示消息处理函数
void CcbCopyFile::OnThreadInfo(WPARAM wParam,LPARAM lParam)
{
if (wParam == 0)
{//源文件路径参数
m_szSrcPath.Format("%s",lParam);
//AfxMessageBox(m_szSrcPath);
}
else if (wParam == 1)
{//目标文件路径参数
m_szDesPath.Format("%s",lParam);
//AfxMessageBox(m_szDesPath);
}
else if (wParam == 2)
{//启动
m_pProgressDlg = new CCopyFileDlg;
m_pProgressDlg->Create(IDD_DIALOG1);
m_pProgressDlg->m_szSrcPath = m_szSrcPath;
m_pProgressDlg->m_szDesPath = m_szDesPath;
        m_pProgressDlg->UpdateData(FALSE);
m_pProgressDlg->ShowWindow(TRUE);
}
else if (wParam == 3)
{//进度
m_pProgressDlg->m_Progress.SetPos(lParam);
}
else if (wParam == 4)
{//速度
m_pProgressDlg->UpdateSpeed(lParam);
}
else if (wParam == 5)
{//时间
float *p = (float *)lParam;
m_pProgressDlg->UpdateTime(*p);
}
else 
{//完成
m_pProgressDlg->OnCancel();
}
//return 0;问题:当运行用户界面线程时,拖动一下用户界面的窗口后,
进度条不会再更新了;如果不拖动,则一切运行正常。
为什么????