📄 mainfrm.cpp
字号:
UserInfo* pInfo=new UserInfo;
pInfo->Id=msg.aFriendId.GetAt(i);
str1.Format("%d",pInfo->Id);
pInfo->HaveDetail=0;
lstrcpy(pInfo->Name,str1);
FriendState* pState=new FriendState;
pState->OnlineState=0;
GetApp()->m_aUserInfo.Add(pInfo);
GetApp()->m_aUserState.Add(pState);
GetApp()->m_aUserInfo.GetSize();
m_wndBar.AddItem(0,str1,0,pInfo->Id);
}
m_wndBar.Invalidate();
break;
}
case ONLINE_FRIEND:
{
//current all online friend
if(iOnlineState==0)break;
CMsgOnlineFriend msg;
CopyDataBuf(&msg,pData);
if(!msg.LoadFromBuf())break;
UserInfo *pInfo=NULL;
FriendState *pState=NULL;
for(int i=0;i<msg.aFriendId.GetSize();i++)
{
if(FindInArray(GetApp()->m_aUserInfo,GetApp()->m_aUserState,msg.aFriendId.GetAt(i),pInfo,pState))
{
pState->OnlineState=msg.aFriendState.GetAt(i);
pState->IP=msg.aFriendIP.GetAt(i);
pState->Port=msg.aFriendPort.GetAt(i);
if(pState->OnlineState==1)
m_wndBar.SetOnlineImage(msg.aFriendId.GetAt(i));
}
}
m_wndBar.Invalidate();
break;
}
case RE_FRIEND_DETAIL:
{
if(iOnlineState==0)break;
CMsgPerson msg;
CopyDataBuf(&msg,pData);
if(!msg.LoadFromBuf())break;
TRACE1("Friend Detail %d\n",msg.MyId);
UserInfo *pInfo=NULL;
if(FindInArray(GetApp()->m_aUserInfo,pData->MyId,pInfo))
{
pInfo->HaveDetail=1;
pInfo->CanbeAdd=msg.Canbeadd;
pInfo->Sex=msg.Sex;
pInfo->PhotoId=msg.PhotoId;
lstrcpy(pInfo->Country,msg.Country);
lstrcpy(pInfo->Age,msg.Age);
lstrcpy(pInfo->Province,msg.Province);
lstrcpy(pInfo->City,msg.City);
lstrcpy(pInfo->Name,msg.Name);
m_wndBar.Invalidate();
}
else if(FindInArray(GetApp()->m_aStranger,pData->MyId,pInfo))
{
pInfo->HaveDetail=1;
pInfo->CanbeAdd=msg.Canbeadd;
pInfo->Sex=msg.Sex;
pInfo->PhotoId=msg.PhotoId;
lstrcpy(pInfo->Country,msg.Country);
lstrcpy(pInfo->Age,msg.Age);
lstrcpy(pInfo->Province,msg.Province);
lstrcpy(pInfo->City,msg.City);
lstrcpy(pInfo->Name,msg.Name);
m_wndBar.Invalidate();
}
break;
}
case BE_ADDED_AS_FRIEND:
case FRIEND_IDENTITY_VALIDATE:
{
if(iOnlineState==0)break;
CMsg1 msg;
CopyDataBuf(&msg,pData);
if(!msg.LoadFromBuf())break;
SaveMsg * pMsg=new SaveMsg;
if(index==BE_ADDED_AS_FRIEND)pMsg->type=BEADDED_MSG;
else pMsg->type=ID_CHECK_MSG;
pMsg->ID=msg.MyId;
pMsg->Time=msg.Time;
pMsg->Msg=msg.Msg;
GetApp()->m_aSysMsg.Add(pMsg);
GetApp()->m_aOtherMsg.Add(pMsg);
if(m_pShowOther==NULL)
{
m_pShowOther=new CShowAddMsgDlg;
m_pShowOther->Create(CShowAddMsgDlg::IDD,GetDesktopWindow());
}
TRACE0("R: BE_ADDED_AS_FRIEND\n");
break;
}
case SYSTEM_BROADCAST:
case ACCEPT_AS_FRIEND:
case REFUSE_AS_FRIEND:
{
if(iOnlineState==0)break;
CMsg1 msg;
CopyDataBuf(&msg,pData);
if(!msg.LoadFromBuf())break;
SaveMsg * pMsg=new SaveMsg;
pMsg->type=NOTICE_MSG;
pMsg->ID=msg.MyId;
pMsg->Time=msg.Time;
pMsg->Msg=msg.Msg;
GetApp()->m_aSysMsg.Add(pMsg);
GetApp()->m_aNoticeMsg.Add(pMsg);
if(m_pShowNotice==NULL)
{
m_pShowNotice=new CShowBroadcastDlg;
m_pShowNotice->Create(CShowBroadcastDlg::IDD,GetDesktopWindow());
}
m_pShowNotice->PostMessage(WM_SHOW_NOTICE);
break;
}
case TOTAL_ONLINE:
{
if(iOnlineState==0)break;
CMsg1 msg;
CopyDataBuf(&msg,pData);
if(!msg.LoadFromBuf())break;
CString str;
str.Format("%d",msg.MyId);
SetWindowText(str);
m_bRecvTotal=TRUE;
TRACE0("R: TOTAL_ONLINE\n");
break;
}
case NAME_NOT_FOUND_BY_NAME:
{
if(iOnlineState==0)break;
break;
}
case FOUND_FRIEND_BY_ID:
{
if(iOnlineState==0)break;
CMsgPerson msg;
CopyDataBuf(&msg,pData);
if(!msg.LoadFromBuf())break;
for(int i=0;i<m_aTempInfo.GetSize();i++)
delete m_aTempInfo.GetAt(i);
m_aTempInfo.RemoveAll();
UserInfo *pInfo=new UserInfo;
pInfo->HaveDetail=1;
pInfo->CanbeAdd=msg.Canbeadd;
pInfo->Sex=msg.Sex;
pInfo->PhotoId=msg.PhotoId;
lstrcpy(pInfo->Country,msg.Country);
lstrcpy(pInfo->Age,msg.Age);
lstrcpy(pInfo->Province,msg.Province);
lstrcpy(pInfo->City,msg.City);
lstrcpy(pInfo->Name,msg.Name);
m_aTempInfo.Add(pInfo);
break;
}
case ID_NOT_FOUND_BY_ID:
{
if(iOnlineState==0)break;
break;
}
case RE_ADD_AS_FRIEND:
{
if(iOnlineState==0)break;
CMsg3 msg;
CopyDataBuf(&msg,pData);
if(!msg.LoadFromBuf())break;
break;
}
}
if(pData)
delete pData;
return 0;
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1&&GetApp()->m_bOnlineState)
{
/* CString str;
if(m_bRecvTotal)
{
m_bRecvTotal=FALSE;
}
else
{
GetApp()->m_bOnlineState=0;
str.Format("%d",GetApp()->m_uCurrentUserID);
m_TrayIcon.SetIcon(IDR_OFFLINE,str);
for(int i=0;i<GetApp()->m_aUserState.GetSize();i++)
GetApp()->m_aUserState.GetAt(i)->OnlineState=0;
m_wndBar.SetOfflineState();
KillTimer(1);
}
str.Format("ID:%d",GetApp()->m_uCurrentUserID);
SetWindowText(str);
*/ }
}
void CMainFrame::OnSendMessage()
{
UserInfo *pInfo=NULL;
FriendState *pState=NULL;
if(nGroupFlag==0||nGroupFlag>2)
{
FindInArray(GetApp()->m_aUserInfo,GetApp()->m_aUserState,nCurSelID,pInfo,pState);
}
else
{
FindInArray(GetApp()->m_aStranger,GetApp()->m_aStrangerState,nCurSelID,pInfo,pState);
}
if(pState->pTalk==NULL)
{
pState->pTalk=new CTalkDlg;
pState->pTalk->Create(CTalkDlg::IDD,GetDesktopWindow());
}
pState->pTalk->SendMessage(WM_SEND_MSG,(WPARAM)pInfo,(LPARAM)pState);
}
void CMainFrame::OnUpdateSendMessage(CCmdUI* pCmdUI)
{
pCmdUI->Enable(GetApp()->m_bOnlineState);
}
void CMainFrame::OnFriendDetail()
{
UserInfo *pInfo=NULL;
FriendState *pState=NULL;
if(nGroupFlag==0||nGroupFlag>2)
{
FindInArray(GetApp()->m_aUserInfo,GetApp()->m_aUserState,nCurSelID,pInfo,pState);
}
else
{
FindInArray(GetApp()->m_aStranger,GetApp()->m_aStrangerState,nCurSelID,pInfo,pState);
}
if(pState->pFInfo==NULL)
{
pState->pFInfo=new CFriendDetailDlg;
pState->pFInfo->Create(CFriendDetailDlg::IDD,GetDesktopWindow());
}
pState->pFInfo->SendMessage(WM_SHOW_FRIEND_DETAIL,(WPARAM)pInfo,(LPARAM)pState);
}
void CMainFrame::OnOffline()
{
if(GetApp()->m_bOnlineState)
{
CData msg;
msg.index=OFFLINE;
msg.MyId=GetApp()->m_uCurrentUserID;
msg.tarIP=GetApp()->m_uServerIP;
msg.nPort=GetApp()->m_uServerPort;
GetApp()->m_Socket.SendDataDirect(&msg);
GetApp()->m_bOnlineState=0;
CString str;
str.Format("%d",GetApp()->m_uCurrentUserID);
m_TrayIcon.SetIcon(IDR_OFFLINE,str);
for(int i=0;i<GetApp()->m_aUserState.GetSize();i++)
GetApp()->m_aUserState.GetAt(i)->OnlineState=0;
m_wndBar.SetOfflineState();
KillTimer(1);
str.Format("ID:%d",GetApp()->m_uCurrentUserID);
SetWindowText(str);
}
}
void CMainFrame::OnOnhide()
{
if(GetApp()->m_bOnlineState==2)return;
CData msg;
msg.index=ONHIDE;
msg.MyId=GetApp()->m_uCurrentUserID;
msg.tarIP=GetApp()->m_uServerIP;
msg.nPort=GetApp()->m_uServerPort;
GetApp()->m_Socket.SendDataDirect(&msg);
}
void CMainFrame::OnOnline()
{
if(GetApp()->m_bOnlineState==1)return;
CData msg;
msg.index=ONLINE;
msg.MyId=GetApp()->m_uCurrentUserID;
msg.tarIP=GetApp()->m_uServerIP;
msg.nPort=GetApp()->m_uServerPort;
GetApp()->m_Socket.SendDataDirect(&msg);
}
void CMainFrame::OnSearch()
{
if(GetApp()->m_bOnlineState==0)
{
AfxMessageBox(IDS_NOT_LOGIN_SERVER);
return;
}
if(m_pSearch==NULL)
{
m_pSearch=new CSearchDlg;
m_pSearch->Create(CSearchDlg::IDD,GetDesktopWindow());
}
m_pSearch->ShowWindow(SW_NORMAL);
}
void CMainFrame::OnPersoninfoSetup()
{
if(m_pModifyPI==NULL)
{
m_pModifyPI=new CModifyPIDlg;
m_pModifyPI->Create(CModifyPIDlg::IDD,GetDesktopWindow());
}
m_pModifyPI->SendMessage(WM_SHOW_FRIEND_DETAIL,(WPARAM)(GetApp()->m_aUserInfo.GetAt(0)),0);
}
void CMainFrame::OnSendtoAll()
{
if(GetApp()->m_bOnlineState==0)
{
AfxMessageBox(IDS_NOT_LOGIN_SERVER);
return;
}
if(m_pSendToAll==NULL)
{
m_pSendToAll=new CSendToAllDlg;
m_pSendToAll->Create(CSendToAllDlg::IDD,GetDesktopWindow());
}
m_pSendToAll->ShowWindow(SW_NORMAL);
}
void CMainFrame::OnShowOnline()
{
if(GetApp()->m_bOnlineState==0)
{
AfxMessageBox(IDS_NOT_LOGIN_SERVER);
return;
}
if(m_pShowOnline==NULL)
{
m_pShowOnline=new CShowOnlineDlg;
m_pShowOnline->Create(CShowOnlineDlg::IDD,GetDesktopWindow());
}
m_pShowOnline->ShowWindow(SW_NORMAL);
}
void CMainFrame::OnSendBroadcast()
{
if(GetApp()->m_bOnlineState==0)
{
CString str;
str.LoadString(IDS_NOT_LOGIN_SERVER);
MessageBox(str);
return;
}
if(m_pSendBroad==NULL)
{
m_pSendBroad=new CSendBroadcastDlg;
m_pSendBroad->Create(CSendBroadcastDlg::IDD,GetDesktopWindow());
}
m_pSendBroad->ShowWindow(SW_NORMAL);
}
LRESULT CMainFrame::OnAddFriendRefresh(WPARAM wParam,LPARAM lParam)
{
DWORD uFriendID=wParam;
if(uFriendID<=0)return 0;
if(FindInArray(GetApp()->m_aUserInfo,uFriendID)!=-1)return 0;
UserInfo* pInfo=NULL;
FriendState* pState=NULL;
int rindex=FindInArray(GetApp()->m_aStranger,uFriendID);
if(rindex!=-1)
{
pInfo=GetApp()->m_aStranger.GetAt(rindex);
pState=GetApp()->m_aStrangerState.GetAt(rindex);
GetApp()->m_aStranger.RemoveAt(rindex);
GetApp()->m_aStrangerState.RemoveAt(rindex);
m_wndBar.RemoveAItem(1,uFriendID,FALSE);
}
else
{
pInfo=new UserInfo;
pInfo->Id=uFriendID;
pInfo->HaveDetail=0;
pInfo->PhotoId=0;
itoa(uFriendID,pInfo->Name,10);
pState=new FriendState;
pState->OnlineState=0;
}
GetApp()->m_aUserInfo.Add(pInfo);
GetApp()->m_aUserState.Add(pState);
m_wndBar.AddItem(0,pInfo->Name,pInfo->PhotoId,pInfo->Id);
m_wndBar.Invalidate();
if(!pInfo->HaveDetail)
{
CMsg1 msg;
msg.index=FRIEND_DETAIL;
msg.MyId=GetApp()->m_uCurrentUserID;
msg.tarIP=GetApp()->m_uServerIP;
msg.nPort=GetApp()->m_uServerPort;
msg.FriendId=uFriendID;
GetApp()->m_Socket.SendDataDirect(&msg);
}
return 1;
}
void CMainFrame::OnAddFriend()
{
if(m_pAddFriendDlg==NULL)
{
m_pAddFriendDlg=new CAddFriendDlg;
m_pAddFriendDlg->Create(CAddFriendDlg::IDD);
}
m_pAddFriendDlg->uID=nCurSelID;
if(m_pAddFriendDlg->SendMessage(WM_NOTICE_ADDFRIEND))
m_wndBar.RemoveAItem(1,nCurSelIndex);
}
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
if(pMsg->wParam>'0' &&pMsg->wParam<'5'&&GetKeyState(VK_CONTROL)&0x80)
{
nCurSelIndex=pMsg->wParam-'1';
nGroupFlag=m_wndBar.iSelFolder;
nCurSelID = m_wndBar.GetItemData(nCurSelIndex);
if(nCurSelID!=0)SendMessage(WM_COMMAND,ID_SEND_MESSAGE,0);
return 1;
}
}
return CFrameWnd::PreTranslateMessage(pMsg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -