📄 dspfile.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 + -