#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_)