📄 chatroom.cpp
字号:
{
case GroupAbandonManagement_Self://自己放弃
sprintf(str,"[%s]放弃聊管,[%s]成为聊管", pSrcMember ? pSrcMember->GetString("szNick") : "无", pDstMember ? pDstMember->GetString("szNick") : "无" );
break;
case GroupAbandonManagement_System://系统放弃
if( pSrcMember )
sprintf(strSrc, "系统放弃[%s]聊管,", pSrcMember->GetString("szNick") );
sprintf(strDst, "[%s]成为聊管", pDstMember ? pDstMember->GetString("szNick"): "无");
sprintf( str, "%s%s",strSrc, strDst);
break;
case GroupAbandonManagement_Quit://退出聊天室
if( pSrcMember )
sprintf(strSrc, "[%s]退出聊天室,", pSrcMember->GetString("szNick"));
else
strcpy(strSrc , "聊管退出");
sprintf(strDst,"[%s]成为聊管", pDstMember ? pDstMember->GetString("szNick"): "无");
sprintf( str, "%s%s",strSrc, strDst);
break;
case GroupAbandonManagement_Apply://请求聊管
sprintf(str,"[%s]成为聊管", pDstMember ? pDstMember->GetString("szNick") : "无" );
break;
case GroupAbandonManagement_AbandonRequest://放弃请求
if( pSrcMember )
sprintf(str,"[%s]放弃聊管请求", pSrcMember ? pSrcMember->GetString("szNick") : "无" );
break;
case GroupAbandonManagement_ApplyRequest://申请请求
if( pSrcMember )
sprintf(str,"[%s]申请聊管", pSrcMember ? pSrcMember->GetString("szNick") : "无" );
break;
default:
// ShowMessageText( "系统有误" );
MessageBox(NULL,"系统有误","test",MB_OK );
return 0;
}
MessageBox(NULL,str,"test",MB_OK );
}
break;
case EV_APPLYMANAGER://请求成为管理员(wParam=dwGroupID, lParam=dwUin)
{
IGroupInfo* pGroupInfo = (IGroupInfo*)wParam;
if( pGroupInfo == NULL ) return 0;
uint32 dwUin = lParam;
IGroupMember* pGroupMember = pGroupInfo->MemberFind( dwUin );
if( pGroupMember )
{
char str[256];
sprintf(str, "[%s]申请成为聊天室管理员", pGroupMember->GetString( "szNick") );
MessageBox(NULL,str,"test",MB_OK );
}
}
break;
case EV_MODIFYGROUPREGMEMBERINFO://修改群成员信息(wParam = IGroupMember*, lParam = enum Enum_MemberChange)
{
IGroupMember* pGroupMember = (IGroupMember*)wParam;
uint32 dwType = lParam;
// char str[256];
char strTemp[256];
switch( dwType )
{
case MemberChange_Rename://改名
::Post91UCmd(CMD_91U_ABANDONGROUPMANAGER);
sprintf(strTemp,"[%lu]修改呢称[%s]", pGroupMember->GetLong("dwUin"), pGroupMember->GetString("szNick") );
break;
case MemberChange_Idiograph://玩家签名
::Post91UCmd(CMD_91U_ABANDONGROUPMANAGER);
sprintf(strTemp,"[%lu]修改签名[%s]", pGroupMember->GetLong("dwUin"), pGroupMember->GetString("szIdiograph") );
break;
default:
return 0;
}
MessageBox(NULL,strTemp,"test",MB_OK );
}
break;
default:
break;
}
return 0;
}
#ifdef WM_91U_MESSAGE
void Post91UCmd(DWORD dwCommand, int nData)
{
if(g_hGameWnd)
::PostMessage(g_hGameWnd, WM_91U_MESSAGE, dwCommand, nData);
}
#endif
void CChatRoom::DeInit()
{
im_Deinit();
}
void CChatRoom::GetRoomList()
{
im_GetChatRoomLst( 0, 0, atoi( m_strGameCode ));
}
void CChatRoom::SetRoomListInfo(CGroupSummary* pGroupSummary,int iCount)
{
m_setGroupList.clear();
if (pGroupSummary == NULL)
return;
if (iCount <= 0)
return;
for(int i=0;i< iCount;i++)
{
CGroupSummary* pGroup = new CGroupSummary;
MYASSERT (pGroup);
*pGroup = pGroupSummary[i];
m_setGroupList.push_back(pGroup);
}
}
CGroupSummary* CChatRoom::GetRoomInfoList(int nIndex)
{
int nAmount = m_setGroupList.size();
if(nIndex>=0 && nIndex<nAmount)
return m_setGroupList[nIndex];
return NULL;
}
CGroupSummary* CChatRoom::GetRoomInfoListByID(UINT GroupID)
{
int nAmount = m_setGroupList.size();
for(int i=0;i<nAmount;i++)
{
CGroupSummary* pGroup = m_setGroupList[i];
if(pGroup && pGroup->m_dwGroupID == GroupID)
return pGroup;
}
return NULL;
}
void CChatRoom::ClearRoomListInfo()
{
m_setGroupList.clear();
}
void CChatRoom::GetRoomInfo()
{
im_GetChatRoomInfo( m_dwGroupID, m_strGroupDomain );
}
void CChatRoom::EnterRoom(int nIndex)
{
CGroupSummary* pGroup = this->GetRoomInfoList(nIndex);
if (pGroup == NULL)
return ;
if (m_dwGroupID == pGroup->m_dwGroupID && m_curGroup && m_curGroup->GetLong("dwGroupID") == pGroup->m_dwGroupID)
return; //已经进入了当前聊天室
im_EnterChatRoom( pGroup->m_dwGroupID, pGroup->m_strDomain.c_str() );
}
void CChatRoom::EnterRoomByID(UINT GroupID)
{
if (GroupID == 0 )
return;
if (m_dwGroupID == GroupID && m_curGroup && m_curGroup->GetLong("dwGroupID") == GroupID)
return; //已经进入了当前聊天室
if (this->GetRoomInfoListByID(GroupID))
{
im_EnterChatRoom( GroupID, this->GetRoomInfoListByID(GroupID)->m_strDomain.c_str() );
}
}
void CChatRoom::LeaveRoom()
{
im_LeaveChatRoom( m_dwGroupID, m_strGroupDomain );
}
void CChatRoom::KickMember()
{
im_KickMember( m_dwGroupID, m_strGroupDomain, m_dwUin );
}
void CChatRoom::ApplyManager()
{
im_RequestMgrRole( m_dwGroupID, m_strGroupDomain );
}
void CChatRoom::AbandonManger()
{
im_RequestGiveupMgrRole( m_dwGroupID, m_strGroupDomain );
}
void CChatRoom::ChangeMyInfo()
{
im_ChangeMyInfo( m_dwGroupID, m_strGroupDomain, (Enum_MemberChange)m_dwAttrib, m_strValue ); ///(LPTSTR)(LPCTSTR)m_strValue
}
void CChatRoom::ChangeRoomInfo()
{
im_ChangeChatRoomInfo( m_dwGroupID, m_strGroupDomain, (CHATRM_ATTR)m_dwAttrib,m_strValue ); //(LPTSTR)(LPCTSTR)m_strValue
}
void CChatRoom::SendMsg(UINT dwFriendID)
{
IMsgPacket* pObj;
im_CreateMsgPacket( &pObj ) ;
pObj->InsertText( m_strMsg );
UDATATYPE DataType;
DataType.dwVal = m_dwGroupID;
pObj->Set( "dwGroupID", &DataType );
DataType.dwVal = 0;
pObj->Set( "dwFriendUin", &DataType );
DataType.pszVal = m_strGroupDomain; //(LPCTSTR)m_strGroupDomain;
pObj->Set( "szDomain", &DataType );
DataType.dwVal = ChatMsgType_GroupMsg;
pObj->Set( "dwMsgType", &DataType );
im_SendMsgPacket( pObj );
}
BOOL CChatRoom::AddRoomMember(IGroupInfo* pGroupInfo, IGroupMember* pGroupMember)
{
if( pGroupInfo == NULL ) return false;
if (pGroupMember == NULL ) return false;
if (!this->UpdateRoomMember(pGroupMember))
{
GroupMember* pMember = new GroupMember;
MYASSERT (pMember);
pMember->dwUin = pGroupMember->GetLong("dwUin");
pMember->dwStatus = pGroupMember->GetLong("dwStatus");
pMember->dwEntryTime = pGroupMember->GetLong("dwEnterTime");
strcpy(pMember->szNick,pGroupMember->GetString("szNick"));
strcpy(pMember->szDomain,pGroupMember->GetString("szDomain"));
strcpy(pMember->szIdiograph,pGroupMember->GetString("szIdiograph"));
m_setGroupMember.push_back(pMember);
}
return TRUE;
}
BOOL CChatRoom::UpdateRoomMember(IGroupMember* pGroupMember)
{
if (pGroupMember == NULL ) return false;
GroupMember* pMember = this->GetRoomMemberByUin(pGroupMember->GetLong("dwUin"));
if (pMember)
{
pMember->dwUin = pGroupMember->GetLong("dwUin");
pMember->dwStatus = pGroupMember->GetLong("dwStatus");
pMember->dwEntryTime = pGroupMember->GetLong("dwEnterTime");
strcpy(pMember->szNick,pGroupMember->GetString("szNick"));
strcpy(pMember->szDomain,pGroupMember->GetString("szDomain"));
strcpy(pMember->szIdiograph,pGroupMember->GetString("szIdiograph"));
return TRUE;
}
return FALSE;
}
BOOL CChatRoom::DelRoomMember(IGroupInfo* pGroupInfo, IGroupMember* pGroupMember)
{
if( pGroupInfo == NULL ) return false;
if (m_curGroup->GetLong("dwGroupID") == pGroupInfo->GetLong("dwGroupID"))
return false;
if (pGroupMember == NULL ) return false;
int nAmount = m_setGroupMember.size();
for(int i = nAmount -1;i>=0;i--)
{
GroupMember* pMember = this->GetRoomMemberByIndex(pGroupMember->GetLong("dwUin"));
if (pMember)
{
pMember = NULL;
m_setGroupMember.erase(m_setGroupMember.begin() + i);
return TRUE;
}
}
return false;
}
GroupMember* CChatRoom::GetRoomMemberByIndex(int nIndex)
{
int nAmount = m_setGroupMember.size();
if (nIndex>=0 && nIndex<nAmount)
{
return m_setGroupMember[nIndex];
}
return NULL;
}
GroupMember* CChatRoom::GetRoomMemberByUin(int nUin)
{
int nAmount = m_setGroupMember.size();
for(int i=0;i< nAmount;i++)
{
GroupMember* pMember = this->GetRoomMemberByIndex(i);
if (pMember && pMember->dwUin == nUin)
return pMember;
}
return NULL;
}
void CChatRoom::ClearRoomMembers()
{
int nAmount = m_setGroupMember.size();
for(int i=0;i<nAmount;i++)
{
GroupMember* pMember =m_setGroupMember[i];
pMember = NULL;
// SAFE_DELETE(pMember);
}
m_setGroupMember.clear();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -