//DRS_Progress

#ifndef _DRS_PROGRESS_H_
#define _DRS_PROGRESS_H_

#include <windows.h>
#include "base/at_defs.h"

class DRS_Progress : public reportProgress
{
  public:
  DRS_Progress( byte *sTitle = 0, byte const *sPrompt = 0, bool isLongProcess = false, bool isAllowCancel = true);
  ~DRS_Progress();

  virtual bool progress( uint32 lCurVal, uint32 lTotalVal);

  inline bool IsCancel() const { return isCancel;};

  private:
  void ProcessMessages() const;

  protected:
  HWND hDialog;
  bool isCancel;
  byte const *pPrompt;
};

class DRS_ProgressLong : public DRS_Progress
{
  public:
  DRS_ProgressLong( byte *sTitle = 0, byte *sPrompt = 0, uint32 Interval = 20) :
    DRS_Progress( sTitle, sPrompt, true), ProcInterval(Interval)
    {};

  virtual bool progress( uint32 lCurVal, uint32 lTotalVal);
  private:
  uint32 ProcInterval;
};

#endif