void CHttpDownloadDlg::UpdateControlsDuringTransfer(DWORD dwStartTicks, DWORD& dwCurrentTicks, DWORD dwTotalBytesRead, DWORD& dwLastTotalBytes, DWORD& dwLastPercentage, BOOL bGotFileSize, DWORD dwFileSize) { if (bGotFileSize) { //Update the percentage downloaded in the caption DWORD dwPercentage = (DWORD) (dwTotalBytesRead * 100.0 / dwFileSize); if (dwPercentage != dwLastPercentage) { //SetPercentage(dwPercentage); dwLastPercentage = dwPercentage; //Update the progress control bar //SetProgress(dwTotalBytesRead); // 设置文件下载进度 if(m_listbox.GetSafeHwnd() != NULL) m_listbox.SetProcess(0,dwPercentage/100.0f); } } //Update the transfer rate amd estimated time left every second DWORD dwNowTicks = GetTickCount(); DWORD dwTimeTaken = dwNowTicks - dwCurrentTicks; if (dwTimeTaken > 1000) { double KbPerSecond = ((double)(dwTotalBytesRead) - (double)(dwLastTotalBytes)) / ((double)(dwTimeTaken)); if(m_listbox.GetSafeHwnd() != NULL) m_listbox.SetFileDownload(0,KbPerSecond); //SetTransferRate(KbPerSecond); //Setup for the next time around the loop dwCurrentTicks = dwNowTicks; dwLastTotalBytes = dwTotalBytesRead; if (bGotFileSize) { //Update the estimated time left if (dwTotalBytesRead) { DWORD dwSecondsLeft = (DWORD) (((double)dwNowTicks - dwStartTicks) / dwTotalBytesRead * (dwFileSize - dwTotalBytesRead) / 1000); SetTimeLeft(dwSecondsLeft, dwTotalBytesRead, dwFileSize); } } } }
void MovementAction::OnAttached() { SetTimeLeft(unit->GetMovementSpeed()); }