⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frienddetail.cpp

📁 仿QQ的聊天程序vc++/mfc来学习的简易聊天室代码功能较全
💻 CPP
字号:
// FriendDetail.cpp : implementation file
//

#include "stdafx.h"
#include "client.h"
#include "FriendDetail.h"
#include "Mainfrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFriendDetailDlg dialog


CFriendDetailDlg::CFriendDetailDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFriendDetailDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFriendDetailDlg)
	m_strCountry = _T("");
	m_strAge = _T("");
	m_strProvince = _T("");
	m_strCity = _T("");
//	m_strEmail = _T("");
//	m_strFax = _T("");
//	m_strHomepage = _T("");
	m_strID = _T("");
	m_strName = _T("");
//	m_strPhone = _T("");
	m_canbeadd = -1;
	//}}AFX_DATA_INIT
	pInfo=NULL;	
	pWnd=NULL;
	hIcon=AfxGetApp()->LoadIcon(IDR_NOTIFY);
}


void CFriendDetailDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFriendDetailDlg)
	DDX_Control(pDX, IDC_SEX, m_ComboSex);
	DDX_Control(pDX, IDC_HEADBMP, m_ComboFace);
	DDX_Text(pDX, IDC_COUNTRY, m_strCountry);
	DDX_Text(pDX, IDC_AGE, m_strAge);
	DDX_Text(pDX, IDC_PROVINCE, m_strProvince);
	DDX_Text(pDX, IDC_CITY, m_strCity);
//	DDX_Text(pDX, IDC_EMAIL, m_strEmail);
//	DDX_Text(pDX, IDC_FAX, m_strFax);
//	DDX_Text(pDX, IDC_HOMEPAGE, m_strHomepage);
	DDX_Text(pDX, IDC_ID, m_strID);
	DDX_Text(pDX, IDC_NAME, m_strName);
//	DDX_Text(pDX, IDC_PHONE, m_strPhone);
	DDX_Radio(pDX, IDC_ALLOW_ALL, m_canbeadd);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFriendDetailDlg, CDialog)
	//{{AFX_MSG_MAP(CFriendDetailDlg)
	ON_BN_CLICKED(ID_REFRESH, OnRefresh)
	ON_WM_TIMER()
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_SHOW_FRIEND_DETAIL,OnShowFriendDetail)
	ON_MESSAGE(WM_RECIEVE_MSG,OnRecvFriendDetail)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFriendDetailDlg message handlers

void CFriendDetailDlg::OnRefresh() 
{
	if(!GetApp()->m_bOnlineState)
		return;

	CMsg1 msg;
	msg.index=FRIEND_DETAIL;
	msg.MyId=GetApp()->m_uCurrentUserID;
	msg.tarIP=GetApp()->m_uServerIP;
	msg.nPort=GetApp()->m_uServerPort;
	msg.FriendId=pInfo->Id;	
	BOOL bCancel=FALSE;
	if(!GetApp()->m_Socket.SendData(&msg,bCancel,this))
	{
		CString str;
		str.LoadString(IDS_SERVER_NOT_RES);
		MessageBox(str);
		OnOK();		
		return;
	}
	BeginWaitCursor();
	SetTimer(2,TimeWaitForFriendDetail,NULL);
}
LRESULT CFriendDetailDlg::OnShowFriendDetail(WPARAM wParam,LPARAM lParam)
{
	pInfo=(UserInfo*)wParam;	
	ASSERT(pInfo!=NULL);	
	
	m_strID.Format("%d",pInfo->Id);	
	int photoid=0;
	if(pInfo->HaveDetail)
	{
		if(pInfo->CanbeAdd==0)m_canbeadd=2;
		else if(pInfo->CanbeAdd==1)m_canbeadd=0;
		else m_canbeadd=1;
		m_strCountry=pInfo->Country;
		m_strAge=pInfo->Age;
		m_strProvince=pInfo->Province;
		m_strCity=pInfo->City;
//		m_strEmail=pInfo->Email;
//		m_strFax=pInfo->Fax;
//		m_strHomepage=pInfo->Homepage;		
		m_strName=pInfo->Name;
//		m_strPhone=pInfo->Phone;		
		if(pInfo->PhotoId>=0&&pInfo->PhotoId<UINT(GetApp()->m_nNumberHeadBmp))
			photoid=pInfo->PhotoId;		
		if(pInfo->Sex==0)m_ComboSex.SetCurSel(0);
		else if(pInfo->Sex==1)m_ComboSex.SetCurSel(1);		
	}
	m_ComboFace.SetCurSel(photoid);
	UpdateData(FALSE);
	ShowWindow(SW_NORMAL);

	return 0;
}

BOOL CFriendDetailDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	SetIcon(hIcon,TRUE);
	SetIcon(hIcon,FALSE);	
	CMenu* pMenu=GetSystemMenu(FALSE);
	pMenu->EnableMenuItem(SC_RESTORE,MF_GRAYED|MF_DISABLED);
	pMenu->EnableMenuItem(SC_SIZE,MF_GRAYED|MF_DISABLED);
	pMenu->EnableMenuItem(SC_MAXIMIZE,MF_GRAYED|MF_DISABLED);
 	
	m_ComboFace.SetImageList(&GetApp()->m_imaHead);
	return TRUE;
}

void CFriendDetailDlg::OnTimer(UINT nIDEvent) 
{
	if(nIDEvent==2)
	{
		EndWaitCursor();
		KillTimer(2);
		CString str;
		str.LoadString(IDS_SERVER_NOT_RES);
		MessageBox(str);
		OnOK();
	}	
}

LRESULT CFriendDetailDlg::OnRecvFriendDetail(WPARAM wParam,LPARAM lParam)
{
	if(!GetApp()->m_bOnlineState)return 0;

	CData* pData=(CData*)wParam;
	if(pData->index==RE_FRIEND_DETAIL)
	{
		if(pInfo==NULL)return 0;
		CMsgPerson msg;
		CopyDataBuf(&msg,pData);
		if(!msg.LoadFromBuf())return 0;
		
		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->Email,msg.Email);
//		lstrcpy(pInfo->Fax,msg.Fax);
//		lstrcpy(pInfo->Homepage,msg.Homepage);
//		lstrcpy(pInfo->Phone,msg.Phone);
		lstrcpy(pInfo->Name,msg.Name);			

		UserInfo *pInfo2=NULL;
		if(FindInArray(GetApp()->m_aUserInfo,msg.MyId,pInfo2)||FindInArray(GetApp()->m_aStranger,msg.MyId,pInfo2))
		{
			if(pInfo!=pInfo2)
			{
				pInfo2->HaveDetail=1;
				pInfo2->CanbeAdd=msg.Canbeadd;
				pInfo2->Sex=msg.Sex;
				pInfo2->PhotoId=msg.PhotoId;
				lstrcpy(pInfo2->Country,msg.Country);
				lstrcpy(pInfo2->Age,msg.Age);			
				lstrcpy(pInfo2->Province,msg.Province);
				lstrcpy(pInfo2->City,msg.City);
//				lstrcpy(pInfo2->Email,msg.Email);
//				lstrcpy(pInfo2->Fax,msg.Fax);
//				lstrcpy(pInfo2->Homepage,msg.Homepage);
//				lstrcpy(pInfo2->Phone,msg.Phone);
				lstrcpy(pInfo2->Name,msg.Name);		
			}
			CMainFrame *pFrame=(CMainFrame*)GetApp()->m_pMainWnd;
//			pFrame->m_wndBar.ModifyItem(pInfo->Id,pInfo->PhotoId,pInfo->Name);
			pFrame->m_wndBar.Invalidate();
		}		
		
		m_strID.Format("%d",pInfo->Id);			
		if(pInfo->CanbeAdd==0)m_canbeadd=2;
		else if(pInfo->CanbeAdd==1)m_canbeadd=0;
		else m_canbeadd=1;
		m_strCountry =pInfo->Country;
		m_strAge=pInfo->Age;
		m_strProvince=pInfo->Province;
		m_strCity=pInfo->City;
//		m_strEmail=pInfo->Email;
//		m_strFax=pInfo->Fax;
//		m_strHomepage=pInfo->Homepage;		
		m_strName=pInfo->Name;
//		m_strPhone=pInfo->Phone;					
		if(pInfo->Sex==0)m_ComboSex.SetCurSel(0);
		else if(pInfo->Sex==1)m_ComboSex.SetCurSel(1);		
		int photoid=0;
		if(pInfo->PhotoId>=0&&pInfo->PhotoId<UINT(GetApp()->m_nNumberHeadBmp))
			photoid=pInfo->PhotoId;
		m_ComboFace.SetCurSel(photoid);
		UpdateData(FALSE);
		EndWaitCursor();
		KillTimer(2);
		if(pWnd!=NULL)pWnd->PostMessage(WM_REFRESH_DATA);
		return 1;
	}
	else
	{
		return 0;
	}
}

void CFriendDetailDlg::OnCancel() 
{
	if(pWnd!=NULL)pWnd->PostMessage(WM_REFRESH_DATA);
	CDialog::OnCancel();
}

void CFriendDetailDlg::OnClose() 
{ 	
	OnCancel();	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -