00001 #ifndef __PROGRESS_H__
00002 #define __PROGRESS_H__
00003 #include <stdlib.h>
00004 #include <stdio.h>
00005
00006
00007
00008
00009 #ifdef _WIN32
00010 #include <windows.h>
00011 #ifndef _MT
00012 #define _MT
00013 #endif
00014 #include <process.h>
00015
00016
00017 typedef struct tagHPROGRESSBAR
00018 {
00019 HWND hDlg;
00020 int iMagic;
00021 }
00022 HPROGRESSBAR;
00023
00024 typedef struct tagPROGRESSPROCARGS
00025 {
00026 HPROGRESSBAR hBar;
00027 }
00028 PROGRESSPROCARGS;
00029
00030
00031
00032
00033 #define DERIVE_PROGRESSPROCARGS( name, members ) \
00034 typedef struct tag##name \
00035 { \
00036 HPROGRESSBAR hBar; \
00037 members \
00038 } \
00039 name
00040
00041 typedef void ( *PROGRESSPROC )( void *vpProcArgs );
00042
00043 typedef struct tagPROGRESSBAR
00044 {
00045 HINSTANCE hInstance;
00046 HWND hwndOwner;
00047 LPCTSTR lpstrTitle;
00048 PROGRESSPROC lpfnProc;
00049 void *vpProcArgs;
00050 LPCTSTR fileName;
00051 }
00052 PROGRESSBAR;
00053
00054 #else
00055 #error Platform not supported
00056 #endif
00057
00058
00059
00060
00061
00062 void InitProgressCritSec( void );
00063 void DestroyProgressCritSec( void );
00064
00065
00066 #define PROGRESS_SUCCESS 0
00067 #define PROGRESS_FAILURE -1
00068
00069
00070
00071
00072
00073
00074
00075 int StartProgressBar( PROGRESSBAR *bar );
00076
00077
00078
00079
00080
00081 void SetProgressBar( HPROGRESSBAR hBar, float progressPercent );
00082
00083
00084
00085
00086
00087 void SetProgressProcTotalWork( HPROGRESSBAR hBar, int totalIterations );
00088
00089 void BeginProgressProcTimer( void );
00090 void EndProgressProcTimer( void );
00091
00092
00093
00094
00095
00096 void SetProgressProcRetVal( HPROGRESSBAR hBar, int value );
00097
00098
00099
00100
00101
00102 void EndProgressBar( HPROGRESSBAR hBar );
00103
00104
00105
00106
00107
00108 int ProgressProcIsCancelled( void );
00109
00110
00111
00112
00113
00114
00115 int UseProgressBarRetVal( void );
00116
00117
00118 #endif