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/ProgressThreadCtrl.h

76 lines
2.0 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<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