📄 copyfiledlg.h
字号:
#if !defined(AFX_COPYFILEDLG_H__F88E6DE1_0BFB_44A6_B96D_674F746F63BA__INCLUDED_)
#define AFX_COPYFILEDLG_H__F88E6DE1_0BFB_44A6_B96D_674F746F63BA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// CopyFileDlg.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CCopyFileDlg dialog
#include "Vfw.h"
#include <vector>
#pragma comment(lib, "Vfw32.lib")
class CGetFileCallBack
{
public:
virtual void OnGetFileIng(LPCWSTR szPath, LPCWSTR szPathNew, DWORD nSize, DWORD dwGetLen, DWORD dwTime){};
virtual void OnPutFileIng(LPCWSTR szPath, LPCWSTR szPathNew, DWORD nSize, DWORD dwPutLen, DWORD dwTime){};
};
bool GetFile(I_VipShellClientFileManageHandle* pFileManage, LPCWSTR szPath, LPCWSTR szPathNew, CGetFileCallBack* pE);
bool GetDir(I_VipShellClientFileManageHandle* pFileManage, LPCWSTR szPath, LPCWSTR szPathNew, CGetFileCallBack* pE);
bool PutFile(I_VipShellClientFileManageHandle* pFileManage, LPCWSTR szPath, LPCWSTR szPathNew , CGetFileCallBack* pE);
bool PutDir(I_VipShellClientFileManageHandle* pFileManage, LPCWSTR szPath, LPCWSTR szPathNew , CGetFileCallBack* pE);
class CFileHandle : public CPinboard
{
CLocker m_locker;
typedef std::map<std::wstring , FILE* > FILEMAP;
FILEMAP m_hFileVec;
COMPONENT_INSTANCE_PINBOARD(CFileHandle)
protected:
FILE* GetFile(LPCWSTR szPath, UINT32 nType)
{
FILEMAP::iterator it;
it = m_hFileVec.find(szPath);
if( it == m_hFileVec.end() )
{
FILE* fp;
if( nType == 1 )
fp = _wfopen(szPath, L"wb");
else
fp = _wfopen(szPath, L"rb");
if( fp == NULL )
return NULL;
m_hFileVec[szPath] = fp;
return fp;
}
return it->second;
}
public:
bool WriteFile(LPCWSTR szPath, size_t nIndex, LPCVOID lp, size_t len)
{
CMySingleLock mylock(&m_locker);
FILE* fp = GetFile(szPath, 1);
if( fp == NULL )
return false;
if( fseek(fp, nIndex, SEEK_SET ) != 0 )
return false;
fwrite(lp, 1, len, fp);
return true;
}
size_t ReadFile(LPCWSTR szPath, size_t nIndex, LPVOID lp, size_t len, bool* fIsend)
{
CMySingleLock mylock(&m_locker);
*fIsend = false;
FILE* fp = GetFile(szPath,0);
if( fp == NULL )
return -1;
if( fseek(fp, nIndex, SEEK_SET ) != 0 )
return -1;
size_t ret = fread(lp, 1, len, fp);
if( fIsend )
{
if( feof( fp ) )
*fIsend = true;
else
*fIsend = false;
}
return ret;
}
bool CloseFile(LPCWSTR szPath)
{
CMySingleLock mylock(&m_locker);
FILE* fp = GetFile(szPath,0);
if( fp == NULL )
return false;
fclose(fp);
FILEMAP::iterator it;
it = m_hFileVec.find(szPath);
m_hFileVec.erase(it);
return true;
}
};
class CCopyFileDlg : public CDialog
{
CFileHandle m_hFileVec;
bool m_fIsGet;
CString m_strFile;
CString m_strNew;
size_t m_filesize;
UINT32 m_nDataVecItemLen;
std::vector<UINT32> m_DataVec;
typedef std::vector< CPinboardPtr<I_VipShellClientGetFileTransfersInfo> > VIPSHELLCLIENTGETFILETRANSFERSINFOVEC;
typedef std::vector< CPinboardPtr<I_VipShellClientPutFileTransfersInfo> > VIPSHELLCLIENTPUTFILETRANSFERSINFOVEC;
VIPSHELLCLIENTGETFILETRANSFERSINFOVEC m_hVipShellClientGetFileTransfersInfoVec;
VIPSHELLCLIENTPUTFILETRANSFERSINFOVEC m_hVipShellClientPutFileTransfersInfoVec;
void AddVipShellClientGetFileTransfersInfoVec(I_VipShellClientGetFileTransfersInfo* p);
void DelVipShellClientGetFileTransfersInfoVec(I_VipShellClientGetFileTransfersInfo* p);
void AddVipShellClientPutFileTransfersInfoVec(I_VipShellClientPutFileTransfersInfo* p);
void DelVipShellClientPutFileTransfersInfoVec(I_VipShellClientPutFileTransfersInfo* p);
void VipShellClientPutFile();
CPinboardPtr<I_VipShellClientFileManageHandle> m_spVipShellClientFileManageHandle;
public:
void SetCopy(LPCWSTR szFile, LPCWSTR szNew, bool fIsGet, size_t nSize);
void SetVipShellClientFileManageHandle(I_VipShellClientFileManageHandle* p);
public:
virtual BOOL OnInitDialog();
public:
CCopyFileDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CCopyFileDlg)
enum { IDD = IDD_DIALOG_COPYDLG };
CEdit m_wndEditCopy;
CEdit m_wndStat;
CProgressCtrl m_wndProgress;
CAnimateCtrl m_wndAviPlay;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCopyFileDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CCopyFileDlg)
// NOTE: the ClassWizard will add member functions here
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedCancel();
afx_msg void OnTimer(UINT nIDEvent);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_COPYFILEDLG_H__F88E6DE1_0BFB_44A6_B96D_674F746F63BA__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -