www.pudn.com > src.zip > Msg.cpp
// Msg.cpp: implementation of the CMsg1 class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "common.h"
#include "Msg.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMsg1::CMsg1()
{
Msg="";
}
CMsg1::~CMsg1()
{
}
void CMsg1::PackToBuf()
{
CData::PackToBuf();
*((DWORD*)(szBuf+BP))=FriendId;
BP+=sizeof(DWORD);
*((CTime*)(szBuf+BP))=Time;
BP+=sizeof(CTime);
WORD sLen=Msg.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Msg.GetBuffer(Msg.GetLength()));
BP+=sLen;
}
num=BP;
}
BOOL CMsg1::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
FriendId=*((DWORD*)(szBuf+BP));
BP+=sizeof(DWORD);
Time=*((CTime*)(szBuf+BP));
BP+=sizeof(CTime);
WORD sLen=0;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString msg(szBuf+BP,sLen);
Msg=msg;
BP+=sLen;
}
else if(sLen==0)
{
Msg="";
}
else
{
return FALSE;
}
if(BP==num)return TRUE;
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// CMsg2 Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMsg2::CMsg2()
{
Msg="";
}
CMsg2::~CMsg2()
{
}
void CMsg2::PackToBuf()
{
CData::PackToBuf();
WORD aNum=0;
aNum=aFriendId.GetSize();
*((WORD*)(szBuf+BP))=aNum;
BP+=sizeof(WORD);
for(int i=0;i0)
{
strcpy(szBuf+BP,Msg.GetBuffer(Msg.GetLength()));
BP+=sLen;
}
num=BP;
}
BOOL CMsg2::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
WORD aNum=0;
aNum=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(aNum>0)
{
aFriendId.RemoveAll();
for(int i=0;i0&&BP+sLen<=num)
{
CString msg(szBuf+BP,sLen);
Msg=msg;
BP+=sLen;
}
else if(sLen==0)
{
Msg="";
}
else
{
return FALSE;
}
if(BP==num)return TRUE;
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// CMsg3 Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMsg3::CMsg3()
{
}
CMsg3::~CMsg3()
{
}
void CMsg3::PackToBuf()
{
CData::PackToBuf();
*((DWORD*)(szBuf+BP))=Value;
BP+=sizeof(DWORD);
num=BP;
}
BOOL CMsg3::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
Value=*((DWORD*)(szBuf+BP));
BP+=sizeof(DWORD);
if(BP==num)return TRUE;
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// CMsg4 Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMsg4::CMsg4()
{
Msg="";
BroadcastPwd="";
}
CMsg4::~CMsg4()
{
}
void CMsg4::PackToBuf()
{
CData::PackToBuf();
WORD sLen=BroadcastPwd.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,BroadcastPwd.GetBuffer(BroadcastPwd.GetLength()));
BP+=sLen;
}
sLen=Msg.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Msg.GetBuffer(Msg.GetLength()));
BP+=sLen;
}
num=BP;
}
BOOL CMsg4::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
WORD sLen=0;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString msg(szBuf+BP,sLen);
BroadcastPwd=msg;
BP+=sLen;
}
else if(sLen==0)
{
BroadcastPwd="";
}
else
{
return FALSE;
}
sLen=0;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString msg(szBuf+BP,sLen);
Msg=msg;
BP+=sLen;
}
else if(sLen==0)
{
Msg="";
}
else
{
return FALSE;
}
if(BP==num)return TRUE;
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// CMsgModifyPwd Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMsgModifyPwd::CMsgModifyPwd()
{
}
CMsgModifyPwd::~CMsgModifyPwd()
{
}
void CMsgModifyPwd::PackToBuf()
{
CData::PackToBuf();
WORD sLen=OldPwd.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,OldPwd.GetBuffer(OldPwd.GetLength()));
BP+=sLen;
}
sLen=NewPwd.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,NewPwd.GetBuffer(NewPwd.GetLength()));
BP+=sLen;
}
num=BP;
}
BOOL CMsgModifyPwd::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
WORD sLen=0;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString msg(szBuf+BP,sLen);
OldPwd=msg;
BP+=sLen;
}
else if(sLen==0)
{
OldPwd="";
}
else
{
return FALSE;
}
sLen=0;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString msg(szBuf+BP,sLen);
NewPwd=msg;
BP+=sLen;
}
else if(sLen==0)
{
NewPwd="";
}
else
{
return FALSE;
}
if(BP==num)return TRUE;
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// CMsgOnlineFriend Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMsgOnlineFriend::CMsgOnlineFriend()
{
}
CMsgOnlineFriend::~CMsgOnlineFriend()
{
}
BOOL CMsgOnlineFriend::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
WORD aNum=0;
aNum=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(aNum>0)
{
aFriendId.RemoveAll();
aFriendState.RemoveAll();
aFriendIP.RemoveAll();
aFriendPort.RemoveAll();
for(int i=0;i0)
{
strcpy(szBuf+BP,Name.GetBuffer(Name.GetLength()));
BP+=sLen;
}
}
if(Mask&SEX)
{
*((BYTE*)(szBuf+BP))=Sex;
BP++;
}
if(Mask&CANBEADD)
{
*((BYTE*)(szBuf+BP))=Canbeadd;
BP++;
}
if(Mask&PHOTOID)
{
*((DWORD*)(szBuf+BP))=PhotoId;
BP+=sizeof(DWORD);
}
if(Mask&AGE)
{
WORD sLen=Age.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Age.GetBuffer(Age.GetLength()));
BP+=sLen;
}
}
if(Mask&PHONE)
{
WORD sLen=Phone.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Phone.GetBuffer(Phone.GetLength()));
BP+=sLen;
}
}
if(Mask&FAX)
{
WORD sLen=Fax.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Fax.GetBuffer(Fax.GetLength()));
BP+=sLen;
}
}
if(Mask&EMAIL)
{
WORD sLen=Email.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Email.GetBuffer(Email.GetLength()));
BP+=sLen;
}
}
if(Mask&HOMEPAGE)
{
WORD sLen=Homepage.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Homepage.GetBuffer(Homepage.GetLength()));
BP+=sLen;
}
}
if(Mask&ADDRESS)
{
WORD sLen=Address.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Address.GetBuffer(Address.GetLength()));
BP+=sLen;
}
}
if(Mask&DEPARTMENT)
{
WORD sLen=Department.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Department.GetBuffer(Department.GetLength()));
BP+=sLen;
}
}
if(Mask&DESCRIPTION)
{
WORD sLen=Description.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Description.GetBuffer(Description.GetLength()));
BP+=sLen;
}
}
num=BP;
}
BOOL CMsgChangePI::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
Mask=*((DWORD*)(szBuf+BP));
BP+=sizeof(DWORD);
if(Mask&NAME)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Name=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(Mask&SEX)
{
Sex=*((BYTE*)(szBuf+BP));
BP++;
}
if(Mask&CANBEADD)
{
Canbeadd=*((BYTE*)(szBuf+BP));
BP++;
}
if(Mask&PHOTOID)
{
PhotoId=*((DWORD*)(szBuf+BP));
BP+=sizeof(DWORD);
}
if(Mask&AGE)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Age=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(Mask&PHONE)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Phone=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(Mask&FAX)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Fax=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(Mask&EMAIL)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Email=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(Mask&HOMEPAGE)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Homepage=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(Mask&ADDRESS)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Address=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(Mask&DEPARTMENT)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Department=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(Mask&DESCRIPTION)
{
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Description=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
}
if(num==BP)return TRUE;
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// CMsgPerson Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMsgPerson::CMsgPerson()
{
}
CMsgPerson::~CMsgPerson()
{
}
void CMsgPerson::PackToBuf()
{
CData::PackToBuf();
WORD sLen=Name.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Name.GetBuffer(Name.GetLength()));
BP+=sLen;
}
*((BYTE*)(szBuf+BP))=Sex;
BP++;
*((BYTE*)(szBuf+BP))=Canbeadd;
BP++;
*((DWORD*)(szBuf+BP))=PhotoId;
BP+=sizeof(DWORD);
sLen=Age.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Age.GetBuffer(Age.GetLength()));
BP+=sLen;
}
sLen=Phone.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Phone.GetBuffer(Phone.GetLength()));
BP+=sLen;
}
sLen=Fax.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Fax.GetBuffer(Fax.GetLength()));
BP+=sLen;
}
sLen=Email.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Email.GetBuffer(Email.GetLength()));
BP+=sLen;
}
sLen=Homepage.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Homepage.GetBuffer(Homepage.GetLength()));
BP+=sLen;
}
sLen=Address.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Address.GetBuffer(Address.GetLength()));
BP+=sLen;
}
sLen=Department.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Department.GetBuffer(Department.GetLength()));
BP+=sLen;
}
sLen=Description.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Description.GetBuffer(Description.GetLength()));
BP+=sLen;
}
sLen=Password.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,Password.GetBuffer(Password.GetLength()));
BP+=sLen;
}
num=BP;
}
BOOL CMsgPerson::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Name=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
Sex=*((BYTE*)(szBuf+BP));
BP++;
Canbeadd=*((BYTE*)(szBuf+BP));
BP++;
PhotoId=*((DWORD*)(szBuf+BP));
BP+=sizeof(DWORD);
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Age=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Phone=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Fax=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Email=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Homepage=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Address=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Department=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Description=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString a(szBuf+BP,sLen);
Password=a;
BP+=sLen;
}
else if(sLen<0) return FALSE;
if(num==BP)return TRUE;
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// CShowOnlinePeople Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CShowOnlinePeople::CShowOnlinePeople()
{
}
CShowOnlinePeople::~CShowOnlinePeople()
{
}
void CShowOnlinePeople::PackToBuf()
{
CData::PackToBuf();
WORD aNum=aId.GetSize();
*((WORD*)(szBuf+BP))=aNum;
BP+=sizeof(WORD);
for(int i=0;i0)
{
strcpy(szBuf+BP,aName[i].GetBuffer(aName[i].GetLength()));
BP+=sLen;
}
sLen=aDepartment[i].GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
strcpy(szBuf+BP,aDepartment[i].GetBuffer(aDepartment[i].GetLength()));
BP+=sLen;
}
}
num=BP;
}
BOOL CShowOnlinePeople::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
WORD aNum=0;
aNum=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(aNum>0)
{
aPhotoId.RemoveAll();
aId.RemoveAll();
aName.RemoveAll();
aDepartment.RemoveAll();
for(int i=0;i=0&&sLen=0&&sLen