#if !defined(AFX_COPYFILETHREAD_H__486ACE7D_C8B2_11D0_B9E6_00A024706EDC__INCLUDED_)
#define AFX_COPYFILETHREAD_H__486ACE7D_C8B2_11D0_B9E6_00A024706EDC__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// CopyFileThread.h : header file
//
#define _WIN32_WINNT 0x0400
#include <afxmt.h>
#define WM_USER_THREAD_MSG (WM_USER + 1)
#define COPYTHREAD_START 10001
#define COPYTHREAD_PROGRESS 10002
#define COPYTHREAD_DONE 10003
#define COPYTHREAD_ABORT 10004
/////////////////////////////////////////////////////////////////////////////
// CCopyFileThread thread
class CCopyFileThread : public CWinThread
{
DECLARE_DYNCREATE(CCopyFileThread)
protected:
static DWORD WINAPI CopyProgressRoutine(LARGE_INTEGER TotalFileSize,
LARGE_INTEGER TotalBytesTransferred,
LARGE_INTEGER StreamSize,
LARGE_INTEGER StreamBytesTransferred,
DWORD dwStreamNumber,
DWORD dwCallbackReason,
HANDLE hSourceFile,
HANDLE hDestinationFile,
LPVOID lpData );
public:
void Abort();
CCopyFileThread(); // protected constructor used by dynamic creation
static CCopyFileThread * CreateCopyThread(LPCSTR szSrc, LPCSTR szDest, CWnd *pNotifyWnd = NULL);
void Init(LPCSTR szSource, LPCSTR szDest, CWnd *pNotifyWnd = NULL);
CEvent m_evDone;
CEvent m_evAbort;
CEvent m_evExit;
CWnd *m_pNotifyWnd;
CString m_strDest;
CString m_strSource;
virtual ~CCopyFileThread();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCopyFileThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CCopyFileThread)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_COPYFILETHREAD_H__486ACE7D_C8B2_11D0_B9E6_00A024706EDC__INCLUDED_)