|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
// <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>ʹ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д:
|
|
|
|
|
|
//<2F><><EFBFBD>ڣ<EFBFBD>2011-11-15
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "progressbase.h"
|
|
|
|
|
|
#include "AttachBase.h"
|
|
|
|
|
|
#include "ProcessThread.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NProgress
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_CLASS_EXPORT CProgressThreadCtrl
|
|
|
|
|
|
: public CProgressBase
|
|
|
|
|
|
, public CAttachBase
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CProgressThreadCtrl(void);
|
|
|
|
|
|
~CProgressThreadCtrl(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool AttachInput(void* pProgressCtrl, bool bAutoDelete = false); //<2F><><EFBFBD><EFBFBD>ΪCProgressCtrl<72><6C><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
virtual void SetProgressText(LPCTSTR lpszText);
|
|
|
|
|
|
virtual void SetProgressPos(int nPos);
|
|
|
|
|
|
virtual void SetProgressRange(int nLower, int nUpper);
|
|
|
|
|
|
virtual void SetProgressInfo(__int64 cur, __int64 total);
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool IsCanceled(void);
|
|
|
|
|
|
virtual bool IsSucceed(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void EnableSucceed(bool bEnable);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void ThreadFinished(bool bSucceed); //<2F>߳<EFBFBD>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>øú<C3B8><C3BA><EFBFBD><EFBFBD>ر<EFBFBD><D8B1>߳<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
CProgressCtrl* GetProgress() { return (CProgressCtrl*)GetInput(); }
|
|
|
|
|
|
CProcessThread& GetThread() { return m_thread; }
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
|
|
|
|
|
|
bool RunThread() { return m_thread.Run(); }
|
|
|
|
|
|
bool RunAndWaitForDone(); //<2F><><EFBFBD><EFBFBD><EFBFBD>̲߳<DFB3><CCB2>ȴ<EFBFBD><C8B4>߳̽<DFB3><CCBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//ȡ<><C8A1><EFBFBD>߳<EFBFBD>
|
|
|
|
|
|
void CancelThread();
|
|
|
|
|
|
|
|
|
|
|
|
void SetThreadFunc(LPTHREAD_START_ROUTINE lpThreadFunc, void* pParameter);
|
|
|
|
|
|
//<2F><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>ʱʹ<CAB1><CAB9>
|
|
|
|
|
|
void SetProgressWndNull() { m_threadData.m_pProgressWnd = NULL; }
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
struct AFX_CLASS_EXPORT PROGRESS_THREAD_DATA
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CProgressBase<73><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ΪCProgressThreadDlg<6C><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CProgressThreadCtrl<72><6C><EFBFBD><EFBFBD>
|
|
|
|
|
|
CProgressBase* m_pProgressWnd;
|
|
|
|
|
|
LPVOID m_pUserThreadParameter; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//static int m_static_count; //ggff
|
|
|
|
|
|
protected:
|
|
|
|
|
|
CProcessThread m_thread;
|
|
|
|
|
|
PROGRESS_THREAD_DATA m_threadData;
|
|
|
|
|
|
|
|
|
|
|
|
static DWORD WINAPI __ThreadFunc__(LPVOID lpVoid); //<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺߳<DFB3><CCBA><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
LPTHREAD_START_ROUTINE m_pUserThreadFunc; //<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̺߳<DFB3><CCBA><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
}//namespace
|