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

📄 msg.cpp

📁 仿QQ的聊天程序vc++/mfc来学习的简易聊天室代码功能较全
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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;i<aNum;i++)
	{		
		*((DWORD*)(szBuf+BP))=aFriendId.GetAt(i);
		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 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;i<aNum;i++)
		{
			aFriendId.Add(*((DWORD*)(szBuf+BP)));
			BP+=sizeof(DWORD);
		}
	}
	else if(aNum<0)
	{
		return FALSE;
	}

	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;
}

//////////////////////////////////////////////////////////////////////
// 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;i<aNum;i++)
		{
			aFriendId.Add(*((DWORD*)(szBuf+BP)));
			BP+=sizeof(DWORD);
			aFriendState.Add(*(szBuf+BP));
			BP++;
			aFriendIP.Add(*((DWORD*)(szBuf+BP)));
			BP+=sizeof(DWORD);
			aFriendPort.Add(*((DWORD*)(szBuf+BP)));
			BP+=sizeof(DWORD);
		}
	}
	else if(aNum<0) return FALSE;

	if(BP==num)return TRUE;
	return FALSE;
}

void CMsgOnlineFriend::PackToBuf()
{
	CData::PackToBuf();

	WORD aNum=aFriendId.GetSize();
	
	*((WORD*)(szBuf+BP))=aNum;
	BP+=sizeof(WORD);
	for(int i=0;i<aNum;i++)
	{
		*((DWORD*)(szBuf+BP))=aFriendId.GetAt(i);
		BP+=sizeof(DWORD);
		*(szBuf+BP)=aFriendState.GetAt(i);
		BP++;
		*((DWORD*)(szBuf+BP))=aFriendIP.GetAt(i);
		BP+=sizeof(DWORD);
		*((DWORD*)(szBuf+BP))=aFriendPort.GetAt(i);
		BP+=sizeof(DWORD);
	}
	num=BP;
}

//////////////////////////////////////////////////////////////////////
// CMsgChangePI Class
//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMsgChangePI::CMsgChangePI()
{
	Mask=0;	
}

CMsgChangePI::~CMsgChangePI()
{

}

⌨️ 快捷键说明

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