📄 clientdlg.cpp
字号:
this->m_exit.SetWindowText("退出");
}
else if(IsUserLoad(strReceived))
{
UpdateUserInfo();
UpdateData();
}
else if(IsToMe(strReceived))
{
}
else if(IsMakeSure(strReceived))
{
}
else
{
m_listMsg.AddString(strReceived);
UpdateData(FALSE);
}
}
else
{
AfxMessageBox("信息接受错误!");
}
delete pBuf;
}
void CClientDlg::OnButtonChange()
{
AfxMessageBox("功能尚未实现");
}
void CClientDlg::OnButtonUserinfo()
{
m_userInforDlg->DoModal();
if(this->m_nameCopy!=m_userInforDlg->m_userName)
{
CString preStr=this->BulidChangeMsg();
SendMsg(preStr);
this->m_nameCopy=m_userInforDlg->m_userName;
UpdateData(TRUE);
}
}
CString CClientDlg::BuildNomalMsg(CString& preString)
{
CString a;
a="NOMALMSG_"+m_userInforDlg->m_userName+"_"+this->m_comboWho+"_"+preString;
return a;
}
CString CClientDlg::BulidLoadMsg()
{
CString a;
a="SYSTEMMSG_LOAD_"+m_userInforDlg->m_userName+"_"+m_loadDlg->m_password;
return a;
}
CString CClientDlg::BulidChangeMsg()
{
CString a;
a="SYSTEMMSG_CHANGE_"+m_nameCopy+"_"+this->m_userInforDlg->m_userName;
return a;
}
CString CClientDlg::BulidCancelMsg()
{
CString a="SYSTEMMSG_CLOSE_"+this->m_userInforDlg->m_userName+"_";
return a;
}
void CClientDlg::OnCancel()
{
CString WindowValue;
m_exit.GetWindowText(WindowValue);
if(WindowValue=="下线")
{
CString a=BulidCancelMsg();
SendMsg(a);
}
CDialog::OnCancel();
}
bool CClientDlg::IsUserLoad(CString& textStr)
{
int begin=0;
int end=textStr.Find("_");
CString aName;
CString preHead=textStr.Mid(begin,end);
if(preHead=="USERLIST")
{
m_listUser.ResetContent();
begin=end+1;
end=textStr.Find("_",begin);
while(true)
{
if(end!=-1)
{
aName=textStr.Mid(begin,end-begin);
begin=end+1;
m_listUser.AddString(aName);
end=textStr.Find("_",begin);
}
else
{
aName=textStr.Mid(begin);
m_listUser.AddString(aName);
break;
}
}
return true;
}
else
{
return false;
}
}
bool CClientDlg::IsToMe(CString& text)
{
int begin=0;
int end=text.Find("_");
CString a=text.Mid(begin,end-begin);
if(a=="CHAT")
{
CString who;
CString toWho;
CString item;
CString msg;
begin=end+1;
end=text.Find("_",begin);
who=text.Mid(begin,end-begin);
begin=end+1;
end=text.Find("_",begin);
toWho=text.Mid(begin,end-begin);
begin=end+1;
item=text.Mid(begin);
msg=who+" 对 "+toWho+" 说 :"+item;
msg=AddTimeMsg(msg);
m_listMsg.AddString(msg);
if(toWho==m_userInforDlg->m_userName)
{
msg=who+" 对 你 说 :"+item;
msg=AddTimeMsg(msg);
m_listOwn.AddString(msg);
}
return true;
}
else
return false;
}
void CClientDlg::OnSelchangeListUser()
{
int a=this->m_listUser.GetCurSel( );
m_listUser.GetText(a,m_userName);
// AfxMessageBox(m_userName);
// this->m_comboTo.AddString();*/
if(m_userName!=m_userInforDlg->m_userName)
{
if(m_comboTo.FindString(0,m_userName)==CB_ERR)
{
m_comboTo.AddString(m_userName);
a=m_comboTo.FindString(0,m_userName);
m_comboTo.SetCurSel(a);
}
}
// AfxMessageBox(this->m_userName);
}
void CClientDlg::OnTimer(UINT nIDEvent)
{
CTime a=CTime::GetCurrentTime();
CString b=a.Format("%H:%M:%S");
m_time.SetWindowText(b);
CDialog::OnTimer(nIDEvent);
}
CString CClientDlg::AddTimeMsg(CString& text)
{
CTime a=CTime::GetCurrentTime();
CString b=a.Format("(%H:%M:%S)");
b=b+text;
return b;
}
void CClientDlg::UpdateUserInfo()
{
m_userNumber=m_listUser.GetCount();
CString preText;
preText.Format("当前在线人数:%d",m_userNumber);
preText=preText+"\n"+m_userInforDlg->m_userName+" 欢迎进入聊天室!";
m_peoNumber.SetWindowText(preText);
}
bool CClientDlg::IsMakeSure(CString& textMsg)
{
int begin=0;
int end=textMsg.Find("_");
CString head=textMsg.Mid(begin,end-begin);
if(head=="SUCCESS")
{
begin=end+1;
CString preName=textMsg.Mid(begin);
this->m_userInforDlg->m_userName=preName;
this->m_userInforDlg->m_userCopy=preName;
GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_USERINFO)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_MSG)->EnableWindow(TRUE);
GetDlgItem(IDC_COMBO_WHO)->EnableWindow(TRUE);
GetDlgItem(IDC_LIST_USER)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_LOAD)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_REGISTER)->EnableWindow(FALSE);
m_exit.SetWindowText("下线");
UpdateUserInfo();
return true;
}
else if(head=="FAIL")
{
AfxMessageBox("登陆失败");
return true;
}
return false;
}
void CClientDlg::OnOK()
{
CString buttonText;
m_ok.GetWindowText(buttonText);
if(buttonText=="更改IP")
{
GetDlgItem(IDC_EDIT_IPADD)->EnableWindow(TRUE);
m_ok.SetWindowText("确定");
}
else if(buttonText=="确定")
{
UpdateData(TRUE);
if(CheckId(this->m_ipAddress)||m_ipAddress=="localhost")
{
m_IpAddress=m_ipAddress;
GetDlgItem(IDC_EDIT_IPADD)->EnableWindow(FALSE);
m_ok.SetWindowText("更改IP");
}
else
{
AfxMessageBox("请输入正确的IP格式");
}
}
// CDialog::OnOK();
}
bool CClientDlg::CheckId(CString& preIp)
{
int begin=0;
int end=0;
CString seg1;
CString seg2;
CString seg3;
CString seg4;
end=preIp.Find(".",begin);
seg1=preIp.Mid(begin,end-begin);
begin=end+1;
end=preIp.Find(".",begin);
seg2=preIp.Mid(begin,end-begin);
begin=end+1;
end=preIp.Find(".",begin);
seg3=preIp.Mid(begin,end-begin);
begin=end+1;
seg4=preIp.Mid(begin);
if((!seg1.IsEmpty())&&
(!seg2.IsEmpty())&&
(!seg3.IsEmpty())&&
(!seg4.IsEmpty()))
{
if(IsNumberOfIp(seg1)&&
IsNumberOfIp(seg2)&&
IsNumberOfIp(seg3)&&
IsNumberOfIp(seg4)
)
{
return true;
}
}
return false;
}
bool CClientDlg::IsNumberOfIp(CString ipSeg)
{
int size=ipSeg.GetLength();
char *segChar;
if(size>0&&size<=3)
{
segChar=new char[size];
for(int i=0;i<size;i++)
{
segChar[i]=ipSeg[i];
}
int number=atoi(segChar);
if(!(number>=0&&number<=255))
{
return false;
}
}
delete segChar;
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -