18,356
社区成员
发帖
与我相关
我的任务
分享
void Chat::OnClose()
{
// TODO: Add your message handler code here and/or call default
//关闭的时候向服务器发送消息自己要关闭了
//AfxMessageBox(m_caption);
//发送消息的type='O'表示是退出的消息
MESSAGE mess_out;
mess_out.type='O';
char *ss_name = CStringto(this->m_caption); //m_caption为客户的昵称
memcpy( mess_out.sender,ss_name, strlen(ss_name)+1);
memcpy( mess_out.receiver,"123", sizeof("123"));
memcpy( mess_out.sendBuf,"123", sizeof("123"));
send(this->m_userSoc,(char *)&mess_out,sizeof(MESSAGE),0);
CDialogEx::OnClose();
}
else if(recvmess.type=='O'){
//收到离线的消息以后先将本地客户的信息删除掉
//然后将离开人的昵称告诉所有人(仍然在线的人)
AfxMessageBox(CString(recvmess.sender));
num--;
CString str;
str.Format(_T("在线人数:%d"),num);
//AfxMessageBox(str);
pDlg->GetDlgItem(IDC_EDIT4)->SetWindowText(str);
}
num--;
自减的这一句删掉就可以正常接收了,不知道为什么。。。。。 num--;
CString str;
str.Format(_T("在线人数:%d"),num);
//AfxMessageBox(str);
pDlg->GetDlgItem(IDC_EDIT4)->SetWindowText(str);
注释掉以后又可以正常的接收,不知道为什么