重庆理工大学课程设计
}
header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包
IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头 send_blk->write_UINT32(uid);
send_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列
void CP2PClientDlg::OnFindContact() { }
void CP2PClientDlg::OnPersonalSet() {
CContactInfoDlg dlg;//定义联系人信息对话框类对象 dlg.m_nOpenMode = 1;//对话框打开模式为修改信息
//将当前用户的详细信息传给联系人信息对话框中相应的成员变量 dlg.m_nUID = m_myself_info.user_id; dlg.m_strNick = CString(m_myself_info.nick);
CSetSearchTypeDlg set_type_dlg;//定义设置查找类型对话框类对象 if(set_type_dlg.DoModal() == IDOK)//弹出对话框,如果点击了\确定\按钮 { }
CQueryContactResultDlg result_dlg;//定义查找联系人结果对话框类对象 result_dlg.m_nUID = set_type_dlg.m_nUID;//传递查找类型信息 result_dlg.m_strNick = set_type_dlg.m_strNick;
result_dlg.m_nSearchType = set_type_dlg.m_nSearchType;
m_pChildWnd = &result_dlg;//记录当前子对话框,便于后面转发消息 result_dlg.DoModal();//显示查找联系人结果对话框
16
重庆理工大学课程设计
}
dlg.m_strName = CString(m_myself_info.name); dlg.m_strEmail = CString(m_myself_info.email); dlg.m_strTelephone = CString(m_myself_info.telephone); dlg.m_strProfession = CString(m_myself_info.profession); dlg.m_strCollege = CString(m_myself_info.college); dlg.m_strNote = CString(m_myself_info.note); dlg.m_nGender = m_myself_info.gengder; dlg.m_nAge = m_myself_info.age; dlg.m_nPic = m_myself_info.picture;
m_pChildWnd = &dlg;//记录弹出的子窗口句柄,方便转发消息 dlg.DoModal();//弹出对话框
void CP2PClientDlg::OnCancel() { }
void CP2PClientDlg::InitialInterface()//初始化界面 {
//初始化界面
m_ctrlFriendList.SetExtendedStyle (LVS_EX_FULLROWSELECT);//设置整行m_ctrlFriendList.InsertColumn(0,\用户帐号\m_ctrlFriendList.InsertColumn(1,\昵称\m_ctrlFriendList.InsertColumn(2,\状态\m_ctrlFriendList.InsertColumn(3,\新消息数\m_ctrlOnlineStatus.AddString(\上线\m_ctrlOnlineStatus.AddString(\隐身\
CDialoge D_dlg; //定义一个Dialoge类对象,用于防止意外关闭 if(D_dlg.DoModal()==IDOK) { }
Quit();
CDialog::OnCancel();
选中模式
17
重庆理工大学课程设计
}
m_ctrlOnlineStatus.AddString(\离开\m_ctrlOnlineStatus.SetCurSel(0);
void CP2PClientDlg::GetFriendList() { }
void CP2PClientDlg::GetMySelfInfo() {
//发送获取自己信息的消息包 IM_Header header;
header.cmd = IM_CONTACT_SEARCH; header.id = theApp.m_ClientInfo.uid;
header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包
IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头 send_blk->write_UINT8(IM_SEARCH_ID); send_blk->write_UINT32(theApp.m_ClientInfo.uid); send_blk->write_UINT16(0);//只取一次
send_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 //发送获取好友列表消息 IM_Header header;
header.cmd = IM_CONTACT_GET_LIST; header.id = theApp.m_ClientInfo.uid;
header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包
IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头
send_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列
18
重庆理工大学课程设计
}
send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列
void CP2PClientDlg::GetFriendOnlineInfo() { }
void CP2PClientDlg::Quit()//退出程序 {
KillTimer(HEARTBEAT_TIMER); //取消心跳包定时器消息 //开始发送退出信息 IM_Header header;
header.cmd = IM_SESSION_LOGOUT; header.id = theApp.m_ClientInfo.uid; //发送获取好友在线信息消息
vector
usr_info_base* temp = (usr_info_base*)*it_a; //开始发送改变在线状态信息 IM_Header header;
header.cmd = IM_GET_ONLINE_INFO; header.id = theApp.m_ClientInfo.uid;
header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包
IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头 send_blk->write_UINT32(temp->user_id);
send_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列
19
重庆理工大学课程设计
}
header.seq = CP2PClientApp::create_blk_seq(); header.reserved = 0; //开始构造数据包
IM_Message_Block* send_blk = new IM_Message_Block; send_blk->write_header(header);//构造消息头
send_blk->write_buffer(theApp.m_ClientInfo.password,MAX_PASSWORD_LEsend_blk->src_ip_ = theApp.m_ServerInfo.server_ip;//填充该消息的目的地 send_blk->src_port_ = theApp.m_ServerInfo.server_port; send_blk->length_ = send_blk->get_cursor();//填充消息长度 g_send_msg_queue.push_msg(send_blk);//将消息放入发送消息队列 //将最近登录帐号重新写入配置文件 char szTemp[MAX_STRING_LEN] = \
g_fileobj.update_string(\//删除和所有好友的聊天记录
int nRows = m_ctrlFriendList.GetItemCount(); for(int i=0; i vector vector delete data;//删除记录在ListCtrl上的指针 CString* msg = (CString*)*it; delete msg;//删除单条聊天记录 N+1); d,szTemp,10)); (vector void CP2PClientDlg::OnClose() { CDialoge D_dlg; //定义一个Dialoge类对象,用于防止意外关闭 20