CEstimateTimeStatic - A Class for Estimating Remaining Time






4.69/5 (8 votes)
Feb 7, 2003
2 min read

50901

1078
A simple but effective class for estimating remaining time in the execution of a process
Overview
This article presents a CStatic
derived class for estimating and displaying remaining time. It also provides color functionality (a lot of thanks to Robert Brault for his CColorStatic
class). Using this class is quite similar to using CProgressCtrl
- you set the process size and then, as the process executes, you offset the current position and knowing the current position in the process and the amount of time spent, it calculates the time left until the end of the process. The class does not estimate remaining time every time you offset, estimating being done every 1 second. CEstimateTimeStatic
works also with processes that could be interrupted (example, user is asked for confirmation) and then resumed (the time interval between displaying the confirmation and resuming the process after user makes his choice doesn't count because this amount of time is not spent for executing the process).
Usage
- Add EstimateTimeStatic.h and EstimateTimeStatic.cpp to your project.
- Drop a Static/label control on the dialog.
- Add a member variable for the particular static control. Give it the name (say
m_sEstimateTimeLeft
) and select a category of typeControl
. This would make the variable typeCStatic
automatically. - Open your class and add the line
#include "EstimateTimeStatic.h"
on top to include the declarations of theCEstimateTimeStatic
class. Replace the classCStatic
withCEstimateTimeStatic
in header file.//{{AFX_DATA(CEstimateTimeSampleDlg) enum { IDD = IDD_ESTIMATETIMESAMPLE_DIALOG }; CEstimateTimeStatic m_sEstimateTimeLeft; //}}AFX_DATA
-
Before you start executing the assigned process, initialize
m_sEstimateTimeLeft
:Let's say that you want to copy some files with the total size of 100MB:
- set the message to be displayed
- set the size of the process
m_sEstimateTimeLeft.SetMessageText("Estimated time left : "); //message to be displayed m_sEstimateTimeLeft.SetProcessSize(100*1024); //set process size in KB for better resolution
- Call the function
m_sEstimateTimeLeft.StartProcess ()
and start copying files:void CYourClass::CopySomeFiles(){ ... ... m_sEstimateTimeLeft.StartProcess (); ... //start copying for (int nCount = 1;nCount <= nFilesNumber ; nCount++) { //copy file m_sEstimateTimeLeft.OffsetProcessPosition(file size(in kilobytes)); if ( //we need to display some confirmation //) { m_sEstimateTimeLeft.PauseProcess(); //display confirmation (the confirmation window is supposed to be modal, //so the execution of the process stops) m_sEstimateTimeLeft.ResumeProcess(); } } }
- Don't forget to call
m_sEstimateTimeLeft.StopProcess()
:void CYourClass::CopySomeFiles() { ... ... m_sEstimateTimeLeft.StopProcess (); }
Acknowledgements
- Robert Brault - For using code from his class
CColorStatic
License
This article has no explicit license attached to it, but may contain usage terms in the article text or the download files themselves. If in doubt, please contact the author via the discussion board below.
A list of licenses authors might use can be found here.