?? 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 + -