//------------------------------------------------------------------------------------- bool DlgEffectBase::CProcessTask::OnProgressUpdate (int nFinishPercentage) { if (!m_continue_process) return false ; nFinishPercentage = FClamp(nFinishPercentage, 0, 100) ; if (nFinishPercentage % 5) return true ; // span == 5 if (m_nLastPercent == nFinishPercentage) return true ; FCObjImage & img = m_pDlg->m_curr ; FCObjImage * pLayer = m_pDlg->m_layer ; // update status m_nLastPercent = nFinishPercentage ; m_pDlg->PostMessage(WM_PHOXO_PROCESS_STEP, m_id) ; // update view every 20% if ((nFinishPercentage >= m_nLastUpdate+20) || (nFinishPercentage == 100)) { int nStart = img.Height() * m_nLastUpdate / 100 ; int nEnd = img.Height() * nFinishPercentage / 100 ; if (nFinishPercentage == 100) nStart = 0 ; // update view for (int y=nStart ; y < nEnd ; y++) { for (int x=0 ; x < img.Width() ; x++) { *(RGBQUAD*)pLayer->GetBits(x,y) = *(RGBQUAD*)img.GetBits(x,y) ; } } m_pDlg->m_view->Invalidate() ; m_nLastUpdate = nFinishPercentage ; } return true ; }