⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 copyfiledlg.h

📁 VIPSHELL2007客户端代码
💻 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 + -