📄 myqqclientdlg.cpp
字号:
}
break;
case 10:
MessageBox("用户信息修改成功!");
DownLoadList();
break;
}
}
void CMyQQClientDlg::OnFriendlistBtn()
{
// TODO: Add your control notification handler code here
ChangeFolder(0);
}
void CMyQQClientDlg::OnStrangerlistBtn()
{
// TODO: Add your control notification handler code here
ChangeFolder(1);
}
void CMyQQClientDlg::OnBlacklistBtn()
{
// TODO: Add your control notification handler code here
ChangeFolder(2);
}
BOOL CMyQQClientDlg::ConnectToServer()
{
if(!m_IsConnected) {
if(!m_clientSocket.Create()) {
MessageBox("套接字创建失败!");
return FALSE;
}
if(!m_clientSocket.Connect(serverAddr,serverPort))
{
MessageBox("连接服务器失败");
return FALSE;
}
m_chatSocket.Create(9000,SOCK_DGRAM);
m_chatSocket.SetParent(this);
m_IsConnected = TRUE;
}
return TRUE;
}
void CMyQQClientDlg::RegisterUserInfo()
{
SetWindowText("正在注册...");
m_msg.m_msgType = 0;
memcpy(m_msg.m_msgBuff,&m_userInfo,1024);
m_clientSocket.Send(&m_msg,sizeof(SClientMsg));
SetWindowText("注册消息已送出!");
}
void CMyQQClientDlg::DownLoadList()
{
SUserInfo info;
if(m_IsDownUserInfo == 3) {
memcpy(&info,m_msg.m_msgBuff,sizeof(SUserInfo));
m_lstFriend.AddTail(info);
}
if((m_iCount < 64)&&(m_userInfo.m_infoFriendList[m_iCount] != 0)) {
m_IsDownUserInfo = 2;
GetUserInfo(m_userInfo.m_infoFriendList[m_iCount]);
m_iCount ++;
}
else {
m_IsDownUserInfo = 0;
for(UINT i=0; i<m_iCount; i++)
{
info = m_lstFriend.GetAt(m_lstFriend.FindIndex(i));
ContentInfo[i].nImageID = info.m_infoPicture + IDB_BITMAP1;
memcpy(ContentInfo[i].strText, info.m_infoNick, 64);
}
m_lstFriendListCtrl.ResetContent();
m_lstFriendListCtrl.SetItems(ContentInfo, m_iCount);
m_iCount = 0;
}
}
void CMyQQClientDlg::SetListEnable(BOOL pParam)
{
if(pParam) {
m_btnMenu.EnableWindow(TRUE);
m_btnMessage.EnableWindow(TRUE);
m_btnFind.EnableWindow(TRUE);
m_lstFriendListCtrl.EnableWindow(TRUE);
m_lstStrangerListCtrl.EnableWindow(TRUE);
m_lstBlackListCtrl.EnableWindow(TRUE);
}
else {
m_btnMenu.EnableWindow(TRUE);
m_btnMessage.EnableWindow(FALSE);
m_btnFind.EnableWindow(FALSE);
m_lstFriendListCtrl.EnableWindow(FALSE);
m_lstStrangerListCtrl.EnableWindow(FALSE);
m_lstBlackListCtrl.EnableWindow(FALSE);
}
}
void CMyQQClientDlg::OnRegisterFinished()
{
memcpy(&m_userInfo,m_msg.m_msgBuff,1024);
CString pCaption;
pCaption.Format("%d",m_userInfo.m_infoID);
SetWindowText(pCaption);
SetListEnable(TRUE);
}
void CMyQQClientDlg::OnServerClose()
{
m_clientSocket.Close();
m_IsConnected = FALSE;
SetWindowText(m_msg.m_msgBuff);
}
void CMyQQClientDlg::LogIn()
{
m_msg.m_msgType = 001;
memcpy(m_msg.m_msgBuff,&m_userInfo,sizeof(SUserInfo));
m_clientSocket.Send(&m_msg,sizeof(SClientMsg));
}
void CMyQQClientDlg::OnLogInFinished()
{
SetListEnable(TRUE);
CString str;
str.Format("%d",m_userInfo.m_infoID);
SetWindowText(str);
}
void CMyQQClientDlg::OnMenu()
{
// TODO: Add your control notification handler code here
CRect rect;
GetWindowRect(&rect);
m_PopMenu = new CMenu;
m_PopMenu->LoadMenu(IDR_SETINFO);
::TrackPopupMenu(m_PopMenu->GetSubMenu(0)->m_hMenu, 0, rect.left, rect.bottom, 0,
this->GetSafeHwnd(),&rect);
}
void CMyQQClientDlg::OnLogout()
{
if(m_IsConnected) {
m_msg.m_msgType = 2;
memcpy(m_msg.m_msgBuff,&m_userInfo,sizeof(SUserInfo));
m_clientSocket.Send(&m_msg,sizeof(SClientMsg));
}
}
void CMyQQClientDlg::GetUserInfo(UINT piUserID)
{
m_msg.m_msgType = 3;
SUserInfo * info = (SUserInfo*)(m_msg.m_msgBuff);
info->m_infoID = piUserID;
m_clientSocket.Send(&m_msg,sizeof(SClientMsg));
}
void CMyQQClientDlg::OnGetUserInfo(SUserInfo &info)
{
m_IsDownUserInfo = 0;
CRegisterDlg regDlg;
regDlg.m_strFullName = info.m_infoName;
regDlg.m_strNickName = info.m_infoNick;
regDlg.m_iAge = info.m_infoAge;
regDlg.m_iSex = info.m_infoSex;
regDlg.m_iPicture = info.m_infoPicture;
regDlg.m_iType = 1;
if(regDlg.DoModal() == IDOK) {
AddFriend(info.m_infoID);
m_msg.m_msgType = 5;
memcpy(m_msg.m_msgBuff,&m_userInfo,sizeof(SUserInfo));
m_clientSocket.Send(&m_msg,sizeof(SClientMsg));
}
}
void CMyQQClientDlg::AddFriend(UINT piUserID)
{
UINT * p = m_userInfo.m_infoFriendList;
int i =0;
while(i < 64) {
if( *p == 0 ) break;
p++;
i++;
}
if(i < 64) {
*p = piUserID;
}
else {
MessageBox("好友链表已满!");
}
}
void CMyQQClientDlg::SendMsg(int iSel)
{
SUserInfo info ;
info = m_lstFriend.GetAt(m_lstFriend.FindIndex(iSel));
CSendRecvDlg dlg;
dlg.m_iType = 1;
dlg.m_strUserInfo.Format("帐号:%d 昵称:%s",info.m_infoID,info.m_infoNick);
dlg.m_strNetInfo.Format("IP地址:%s 端口:%d",info.m_infoAddr,info.m_infoPort);
dlg.m_iPicture = info.m_infoPicture;
if(dlg.DoModal() == IDOK) {
m_msg.m_msgType = info.m_infoID;
sprintf(m_msg.m_msgBuff,"%s",dlg.m_strSend.GetBuffer(dlg.m_strSend.GetLength()));
m_chatSocket.SendTo(&m_msg,sizeof(SClientMsg),9000,info.m_infoAddr);
}
}
void CMyQQClientDlg::RecvMsg()
{
CString addr;
UINT port;
m_chatSocket.ReceiveFrom(&m_msg,sizeof(SClientMsg),addr,port);
CSendRecvDlg dlg;
SUserInfo info;
int i = 0;
int count = m_lstFriend.GetCount();
while (i < count) {
info = m_lstFriend.GetAt(m_lstFriend.FindIndex(i));
if(info.m_infoID == m_msg.m_msgType) {
break;
}
i ++;
}
if(i < count) {
dlg.m_iType = 0;
dlg.m_strUserInfo.Format("帐号:%d 昵称:%s",info.m_infoID,info.m_infoNick);
dlg.m_strNetInfo.Format("IP地址:%s 端口:%d",info.m_infoAddr,info.m_infoPort);
dlg.m_iPicture = info.m_infoPicture;
dlg.m_strRecv.Format("%s",m_msg.m_msgBuff);
if(dlg.DoModal() == IDOK) {
SendMsg(i);
}
}
else
{
return ;
}
}
void CMyQQClientDlg::ReadServerInfo()
{
FILE * fp = fopen("server.info","rb");
if(fp) {
fread(serverAddr,20,1,fp);
fread(&serverPort,sizeof(UINT),1,fp);
fclose(fp);
}
}
void CMyQQClientDlg::OnSetserver()
{
CSetServerDlg dlg;
if(dlg.DoModal() == IDOK) {
FILE * fp = fopen("server.info","wb");
if(fp) {
fwrite(dlg.m_strIP,20,1,fp);
fwrite(&(dlg.m_iPort),sizeof(UINT),1,fp);
fclose(fp);
}
}
}
void CMyQQClientDlg::OnReviseinfo()
{
//
CRegisterDlg regDlg;
regDlg.m_strFullName = m_userInfo.m_infoName;
regDlg.m_strNickName = m_userInfo.m_infoNick;
regDlg.m_iAge = m_userInfo.m_infoAge;
regDlg.m_iSex = m_userInfo.m_infoSex;
regDlg.m_iPicture = m_userInfo.m_infoPicture;
regDlg.m_iPSW = m_userInfo.m_infoPSW;
regDlg.m_iType = 2;
if(regDlg.DoModal() == IDOK) {
m_msg.m_msgType = 5;
strcpy(m_userInfo.m_infoName,regDlg.m_strFullName.GetBuffer(regDlg.m_strFullName.GetLength()));
strcpy(m_userInfo.m_infoNick,regDlg.m_strNickName.GetBuffer(regDlg.m_strNickName.GetLength()));
m_userInfo.m_infoAge = regDlg.m_iAge;
m_userInfo.m_infoSex = regDlg.m_iSex;
m_userInfo.m_infoPicture = regDlg.m_iPicture;
m_userInfo.m_infoPSW = regDlg.m_iPSW;
memcpy(m_msg.m_msgBuff,&m_userInfo,sizeof(SUserInfo));
m_clientSocket.Send(&m_msg,sizeof(SClientMsg));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -