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

📄 netmsg.cpp

📁 SQLBig5BugTool 宽字符操作问题
💻 CPP
字号:

#include "netmsg.h"

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

IMPL_CLASS(CNetMsg,CNetMsg,_MSG_NONE);

CNetMsg::CNetMsg()
{
	Init();
}

CNetMsg::~CNetMsg()
{

}

//////////////////////////////////////////////////////////////////////
void CNetMsg::Init()
{
	memset(m_bufMsg, 0L, sizeof(m_bufMsg));
	m_unMsgSize	=0;
	m_unMsgType	=_MSG_NONE;
}

//////////////////////////////////////////////////////////////////////
BOOL CNetMsg::IsValid(void)
{
	if(_MSG_NONE == this->GetType())
		return false;

	return true;
}

//////////////////////////////////////////////////////////////////////
BOOL CNetMsg::Create(char* pbufMsg, DWORD dwMsgSize)
{
	if(!pbufMsg)
		return false;

	if((unsigned short)dwMsgSize != GetSize(pbufMsg, dwMsgSize))
		return false;

	if(_MSG_NONE == GetType(pbufMsg, dwMsgSize))
		return false;

	memcpy(this->m_bufMsg, pbufMsg, dwMsgSize);
	return true;
}

//////////////////////////////////////////////////////////////////////
void CNetMsg::Process(void *pInfo)
{
	//--------------------
	char szMsg[1024];
	sprintf(szMsg, "Process Msg:%d, Size:%d", m_unMsgType, m_unMsgSize);
	::LogMsg(szMsg);	
}

//////////////////////////////////////////////////////////////////////
//void CNetMsg::Send(void)
//{
//#ifdef _MYDEBUG
//	::LogMsg("SendMsg:%d, size:%d", m_unMsgType, m_unMsgSize);
//
//#endif
//
//	g_objNetwork.SendMsg(m_bufMsg, m_unMsgSize);
//}

//////////////////////////////////////////////////////////////////////
// static functions;
//////////////////////////////////////////////////////////////////////
unsigned short	CNetMsg::GetType(char* pbufMsg, DWORD dwMsgSize)
{
	// check it...
	assert(pbufMsg);
	assert((int)dwMsgSize <= CNetMsg::GetMaxSize());

	unsigned short* pUnShort	=(unsigned short* )pbufMsg;
	return pUnShort[1];
}

//////////////////////////////////////////////////////////////////////
unsigned short	CNetMsg::GetSize(char* pbufMsg, DWORD dwMsgSize)
{
	// check it...
	assert(pbufMsg);
	assert((int)dwMsgSize <= CNetMsg::GetMaxSize());

	unsigned short* pUnShort	=(unsigned short* )pbufMsg;
	return pUnShort[0];
}

//////////////////////////////////////////////////////////////////////
CNetMsg* CNetMsg::CreateMsg(char* pbufMsg, DWORD dwMsgSize)
{
	// check it...
	if(!pbufMsg || (int)dwMsgSize > GetMaxSize())
		return NULL;

	assert((int)dwMsgSize == CNetMsg::GetSize(pbufMsg, dwMsgSize));

	// make it...
	CNetMsg* pMsg	= new CNetMsg;
	//switch(CNetMsg::GetType(pbufMsg,dwMsgSize))
	//{
	//case _MSG_FUSE:
	//	pMsg	=new CMsgFuse;
	//	break;		
	//case _MSG_LOGIN:
	//	pMsg	=new CMsgLogin;
	//	break;
	//case _MSG_TALK:
	//	pMsg	=new CMsgTalk;
	//	break;
	//case _MSG_ACTION:
	//	pMsg	=new CMsgAction;
	//	break;
	//case _MSG_PLAYER:
	//	pMsg	=new CMsgPlayer;
	//	break;
	//case _MSG_TICK:
	//	pMsg	=new CMsgTick;
	//	break;
	//case _MSG_USERINFO:
	//	pMsg	=new CMsgUserInfo;
	//	break;
	//case _MSG_FRIEND:
	//	pMsg	=new CMsgFriend;
	//	break;
	//case _MSG_ITEM:
	//	pMsg	=new CMsgItem;
	//	break;
	//case _MSG_ITEMINFO:
	//	pMsg	=new CMsgItemInfo;
	//	break;
	//case _MSG_INTERACT:
	//	pMsg	=new CMsgInteract;
	//	break;
	//case _MSG_NAME:
	//	pMsg	=new CMsgName;
	//	break;
	//case _MSG_USERATTRIB:
	//	pMsg	=new CMsgUserAttrib;
	//	break;
	//case _MSG_WALK:
	//	pMsg	=new CMsgWalk;
	//	break;
	//case _MSG_MAPITEM:
	//	pMsg	=new CMsgMapItem;
	//	break;
	//case _MSG_TRADE:
	//	pMsg	=new CMsgTrade;
	//	break;
	//case _MSG_NPC:
	//	pMsg	=new CMsgNpc;
	//	break;
	//case _MSG_NPCINFO:
	//	pMsg	=new CMsgNpcInfo;
	//	break;
	//case _MSG_PACKAGE:
	//	pMsg	=new CMsgPackage;
	//	break;
	//case _MSG_WEAPONSKILL:
	//	pMsg	=new CMsgWeaponSkill;
	//	break;
	//case _MSG_ACCOUNT:
	//	pMsg	=new CMsgAccount;
	//	break;
	//case _MSG_CONNECT:
	//	pMsg	=new CMsgConnect;
	//	break;
	//case _MSG_CONNECT_EX:
	//	pMsg	=new CMsgConnectEx;
	//	break;
	//case _MSG_TEAM:
	//	pMsg	=new CMsgTeam;
	//	break;
	//case _MSG_TEAMMEMBER:
	//	pMsg	=new CMsgTeamMember;
	//	break;
	//case _MSG_FLUSHEXP:
	//	pMsg	=new CMsgFlushExp;
	//	break;
	//case _MSG_TASKDIALOG:
	//	pMsg	=new CMsgTaskDialog;
	//	break;
	//case _MSG_MAGICEFFECT:
	//	pMsg	=new CMsgMagicEffect;
	//	break;
	//case _MSG_MAGICINFO:
	//	pMsg	=new CMsgMagicInfo;
	//	break;
	//case _MSG_SYNDICATE:
	//	pMsg	=new CMsgSyndicate;
	//	break;
	//case _MSG_SYNATTRINFO:
	//	pMsg	=new CMsgSyndicateAttributeInfo;
	//	break;
	//case _MSG_WEATHER:
	//	pMsg = new CMsgWeather;
	//	break;
	//case _MSG_FRIENDINFO:
	//	pMsg	=new CMsgFriendInfo;
	//	break;
	//case _MSG_GEMEMBED:
	//	pMsg	=new CMsgGemEmbed;
	//	break;
	//case _MSG_TIME:
	//	pMsg	=new CMsgTime;
	//	break;
	//case _MSG_ITEMINFOEX:
	//	pMsg	=new CMsgItemInfoEx;
	//	break;
	//case _MSG_NPCINFOEX:
	//	pMsg	=new CMsgNpcInfoEX;
	//	break;
	//case _MSG_MAPINFO:
	//	pMsg	=new CMsgMapInfo;
	//	break;
	//case _MSG_MESSAGEBOARD:
	//	pMsg	=new CMsgMessageBoard;
	//	break;
	//case _MSG_SYNMEMBERINFO:
	//	pMsg	=new CMsgSynMemberInfo; 
	//	break;
	//case _MSG_DICE:
	//	pMsg	=new CMsgDice; 
	//	break;
	//case _MSG_PETINFO:
	//	pMsg	=new CMsgPetInfo; 
	//	break;
	//case _MSG_DATAARRAY:
	//	pMsg	=new CMsgDataArray; 
	//	break;
	//case _MSG_TEAMAWARD:
	//	pMsg	=new CMsgTeamAward; 
	//	break;
	//case _MSG_PASSWORDLOCK:
	//	pMsg	=new CMsgPasswordLock;
	//	break;
	//case _MSG_TEAMXP:
	//	pMsg = new CMsgTeamXP;
	//	break;
	//case _MSG_TEAMMEMBERINFO:
	//	pMsg = new CMsgTeamMemberInfo;
	//	break;
	//case _MSG_SERVERINFO:
	//	pMsg = new CMsgServerInfo;
	//	break;
	//case _MSG_TEAM_EX:
	//	pMsg = new CMsgTeamEx;
	//	break;
	//case _MSG_TEAMPOS:
	//	pMsg = new CMsgTeamPos;
	//	break;
	//case _MSG_BATTLE_FIELD:
	//	pMsg	=new CMsgBattleField;
	//	break;
	//case _MSG_BATTLE_FIELD_MEMBER:
	//	pMsg	=new CMsgBattleFieldMember;
	//	break;
	//case _MSG_BATTLE_FIELD_REQ:
	//	pMsg	=new CMsgBattleFieldReq;
	//	break;
	//case _MSG_BATTLE_FIELD_LIST:
	//	pMsg	=new CMsgBattleFieldInfo;
	//	break;
	//default:
	//	break;
	//}

	if(!pMsg)
		return NULL;

	if(!pMsg->Create(pbufMsg, dwMsgSize))
	{
		SAFE_DELETE(pMsg);
		return NULL;
	}
	else
	{
#ifdef _MYDEBUG
		::LogMsg("\n--Receive Msg:%u, Size:%u", pMsg->GetType(), pMsg->GetSize());
#endif
		return pMsg;
	}
}

/*
CNetMsg* CreateNetMsgFromId(const long lId)
{
	return 0;
};

  */

#include <string>
#include <map>
const char* CNetMsg::GetMsgIdName(const long lMsgID)
{
	typedef std::map<long,std::string> STD_MAP_MSGID_2_NAME;
	static STD_MAP_MSGID_2_NAME ls_MapMsgID2Name;
	
	if(ls_MapMsgID2Name.size()<=0)
	{
		//
		char szTxt[256*1024]={0,};
		
		GetPrivateProfileSection(
			"MsgIdLong2Name",
			szTxt,
			sizeof(szTxt),
			"ini/MsgIdDef.ini"
			);

		char* pszKey=szTxt;
		long lVal=0;
		char* pchToken=0;

		for(long lLen=strlen(pszKey);lLen>0;lLen=strlen(pszKey),pszKey+=(lLen+1))
		{
			pchToken=strchr(pszKey,'=');
			
			if(pchToken)
			{
				lVal=atol(pszKey);
				
				ls_MapMsgID2Name.insert(STD_MAP_MSGID_2_NAME::value_type(
					lVal,pchToken+1
					));
			}
		}
	}
	STD_MAP_MSGID_2_NAME::iterator itr=ls_MapMsgID2Name.find(lMsgID);
	if(itr==ls_MapMsgID2Name.end())
	{
		return "";
	}
	else
	{
		return (*itr).second.c_str();
	}
}

⌨️ 快捷键说明

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