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

📄 dspfile.h

📁 DSP应用实例(一)--轻松实现BT多点下载 源码
💻 H
字号:
// DSPFile.h: interface for the DSPFile class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DSPFILE_H__468FCA83_F074_4E6D_A354_4E40904F9A42__INCLUDED_)
#define AFX_DSPFILE_H__468FCA83_F074_4E6D_A354_4E40904F9A42__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "DSP.h"

class DSPFile : public DSPACT  
{
	SELF_SERIALIZE("PPQFILE","DSPFile",DSPACT);

public:
	enum
	{
		FILE_SECT_SIZE=0xFFF,			//每次传送的段的最大尺寸

		//DSPFile类在传送或接收过程中发出的消息
		MSG_SENDSECT	=5001,
		MSG_RECVSECT,
			//wParam	--	_FILEDETAIL结构的指针
			//lParam	--	当前段的长度
		MSG_SENDCOMPLETE,
			//wParam	--	_FILEDETAIL结构的指针
			//lParam	--	完成的原因,调用DSPFile::GetCompleteInfo(lParam,..)传递该参数,可以得到具体原因的字符串表示
			//				如果函数返回true,则表示成功,false表示失败。
		MSG_SETFILENAMESIZE,
			//wParam	--	_FILEDETAIL结构的指针
	};

	struct _FILEDETAIL
	{
		CString		strPathname;	//文件包含路径的名字
		int			nFilesize;		//文件的大小字节数
		int			nCurrLen;		//文件当前传送和接收的长度
		int			nFileID;		//文件的ID,可以是任意值,标识一个唯一的文件
		bool*		lpbRun;			//是否继续接收或传送的布尔变量的地址
		HWND		hwnd;			//接收消息的窗体的句柄
		_FILEDETAIL():hwnd(NULL){};
	};

	DSPFile();
	virtual ~DSPFile();
	bool	ReadySendFile(bool& bRun,SOCKET sock,bool bCrc,DSP::_DSPPACKET& packet,HWND hWnd=NULL);
	bool	ReadyRecvFile(bool& bRun,SOCKET sock,DSP::_DSPPACKET& packet,HWND hWnd=NULL);

	static bool GetCompleteInfo(int which,CString& str);

	std::string		m_strFilename;
	int				m_nFilesize;
	_FILEDETAIL		m_hFileDetail;

protected:
	virtual bool	AttrSectRecv(BYTE byClassLevels,BYTE byAttrNo,const char* const lpBuff,DWORD dwLen,bool bLast);
	virtual bool	AttrSectSend(BYTE byClassLevels,BYTE byAttrNo,char** const lpBuff,DWORD& dwLen,bool& bContinue);
	virtual bool	Serialize(BYTE byClassLevels,BYTE byAttrNo,DSP::_DSPPACKET &dsp);
	virtual bool	UnSerialize(BYTE byClassLevels,BYTE byAttrNo,DSP::_DSPPACKET &dsp,DWORD dwLen);

	//不需要序列化的属性
	ofstream		m_ofs;
	ifstream		m_ifs;

	//需要被序列化的属性
	char			m_buff[SECT_MAX_SIZE];
};


#endif // !defined(AFX_DSPFILE_H__468FCA83_F074_4E6D_A354_4E40904F9A42__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -