You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kev/Drawer/SSBase/MxnFormat/ProgressThreadBase.h

77 lines
2.0 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD>: <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>ʹ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
// <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>ʹ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д:
//<2F><><EFBFBD>ڣ<EFBFBD>2011-08-30
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "ProgressBase.h"
#include "ProgressThreadCtrl.h"
namespace NProgress
{
class AFX_CLASS_EXPORT CProgressThreadBase
{
public:
CProgressThreadBase(CWnd* pParentWnd = NULL);
virtual ~CProgressThreadBase(void);
///< <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>falseʱ<65><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
virtual bool IsCanThread() { return true; }
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
bool DoModal();
//<2F><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
bool StartThread();
//<2F><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetProgressInfo(LPCTSTR lpszDlgTitle=NULL, bool bAllowCancel=true);
//<2F><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ʾ<EFBFBD><CABE>Ϣ
bool SetProgressInfo(__int64 cur, __int64 total);
void SetProgressText(LPCTSTR lpszText);
void SetProgressPos(int nPos);
void SetProgressRange(int nLower, int nUpper);
bool IsCanceled(void);
bool IsSucceed(void);
void EnableSucceed(bool bEnable);
CProgressBase* GetProgress() { return m_pProgress; }
//<2F>󶨽<EFBFBD><F3B6A8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC>󣬲<EFBFBD><F3A3ACB2><EFBFBD><EFBFBD><EFBFBD>m_bShowDlg״̬Ϊfalseʱ<65><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а󶨽<D0B0><F3B6A8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
void AttachProgressCtrl(CProgressCtrl* pProgressCtrl) { m_threadCtrl.AttachInput(pProgressCtrl); }
enum EProgressMode
{
showNothing = 0, //<2F><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
showProgressCtrl= 1, //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊָ<CEAA><D6B8><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>AttachProgressCtrl<72><6C><EFBFBD><EFBFBD>
showProgressDlg = 2, //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>
};
void SetProgressShowMode(EProgressMode pm) { m_showMode = pm; }
protected:
void SetProgressWnd(CProgressBase* pProgressWnd) { m_pProgress = pProgressWnd; }
static DWORD WINAPI _ThreadFunc(LPVOID lpVoid);
//<2F><>Ҫ<EFBFBD><D2AA>д<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
virtual bool DoThreadWork() = 0; //ִ<><D6B4><EFBFBD>̴߳<DFB3><CCB4><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>
private:
CProgressBase* m_pProgress;
CWnd* m_pParentWnd;
LPCTSTR m_lpszDlgTitle;
bool m_bAllowCancel;
CProgressThreadCtrl m_threadCtrl;
EProgressMode m_showMode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾģʽ
};
}//namespace