📄 msg.cpp
字号:
{
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;i<aNum;i++)
{
*((DWORD*)(szBuf+BP))=aPhotoId.GetAt(i);
BP+=sizeof(DWORD);
*((DWORD*)(szBuf+BP))=aId.GetAt(i);
BP+=sizeof(DWORD);
WORD sLen=aName[i].GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);
if(sLen>0)
{
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<aNum;i++)
{
aPhotoId.Add(*((DWORD*)(szBuf+BP)));
BP+=sizeof(DWORD);
aId.Add(*((DWORD*)(szBuf+BP)));
BP+=sizeof(DWORD);
WORD sLen;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>=0&&sLen<num)
{
CString a(szBuf+BP,sLen);
aName.Add(a);
BP+=sLen;
}
else if(sLen!=0) return FALSE;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>=0&&sLen<num)
{
CString a(szBuf+BP,sLen);
aDepartment.Add(a);
BP+=sLen;
}
else if(sLen!=0) return FALSE;
}
}
else if(aNum<0)return FALSE;
if(BP==num)return TRUE;
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// CNoticeMsg Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CNoticeMsg::CNoticeMsg()
{
}
CNoticeMsg::~CNoticeMsg()
{
}
BOOL CNoticeMsg::LoadFromBuf()
{
if(!CData::LoadFromBuf())return FALSE;
IP=*((DWORD*)(szBuf+BP));
BP+=sizeof(DWORD);
Port=*((DWORD*)(szBuf+BP));
BP+=sizeof(DWORD);
if(BP==num)return TRUE;
return FALSE;
}
void CNoticeMsg::PackToBuf()
{
CData::PackToBuf();
*((DWORD*)(szBuf+BP))=IP;
BP+=sizeof(DWORD);
*((DWORD*)(szBuf+BP))=Port;
BP+=sizeof(DWORD);
num=BP;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -