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

📄 registerdlg.cpp

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

#include "stdafx.h"
#include "client.h"
#include "RegisterDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CRegisterDlg dialog


CRegisterDlg::CRegisterDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRegisterDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRegisterDlg)
	//}}AFX_DATA_INIT
	m_bApplyID=TRUE;
	hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}


void CRegisterDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRegisterDlg)
	DDX_Control(pDX, IDC_PROVINCE, m_province);
	DDX_Control(pDX, IDC_CITY, m_city);
	DDX_Control(pDX, IDC_COUNTRY, m_country);
	DDX_Control(pDX, IDC_HEADBMP, m_headbmp);
	DDX_Control(pDX, IDC_SEX, m_sex);
	DDX_Control(pDX, IDC_PWD1, m_pwd1);
	DDX_Control(pDX, IDC_PWD, m_pwd);
	DDX_Control(pDX, IDC_NAME, m_name);
	DDX_Control(pDX, IDC_ALLOW_ALL, m_allowall);
	DDX_Control(pDX, IDC_NEED_CHECK, m_needcheck);
	DDX_Control(pDX, IDC_NOT_ALLOW, m_notallow);
	DDX_Control(pDX, IDC_AGE, m_age);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRegisterDlg, CDialog)
	//{{AFX_MSG_MAP(CRegisterDlg)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_RECIEVE_MSG,OnRecvMsg)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRegisterDlg message handlers

BOOL CRegisterDlg::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_allowall.SetCheck(1);	

	CString temp;
	
	m_headbmp.SetImageList(&GetApp()->m_imaHead);
	m_headbmp.SetCurSel(0);	

	UpdateData(FALSE);
	return TRUE; 
}

//接收信息后进行验证,
//验证成功后生成ID
LRESULT CRegisterDlg::OnRecvMsg(WPARAM wParam,LPARAM lParam)
{
	CData* pData=(CData*)wParam;
 
		KillTimer(1);
		EndWaitCursor();		
		m_uUserID=pData->MyId;
		CString str;
		str.Format("恭喜您注册成功!您的ID号为:%d!",pData->MyId);
		MessageBox(str,"注册成功");
		CDialog::OnOK();
		UserInfo* pInfo=new UserInfo;
		pInfo->Id=pData->MyId;
		lstrcpy(pInfo->Name,msg.Name);
		lstrcpy(pInfo->Country,msg.Country);
		lstrcpy(pInfo->Age,msg.Age);
		pInfo->CanbeAdd=msg.Canbeadd;
		lstrcpy(pInfo->Province,msg.Province);
		lstrcpy(pInfo->City,msg.City);
		pInfo->HaveDetail=1;
		pInfo->PhotoId=msg.PhotoId;
		pInfo->Sex=msg.Sex;
		GetApp()->m_aUserInfo.Add(pInfo);
		FriendState* pState=new FriendState;
		GetApp()->m_aUserState.Add(pState);

	delete pData;
	return 0;	
}

//得到所有用户输入的详细信息
void CRegisterDlg::OnOK() 
{
	UpdateData();
	if(m_strServerIP=="")
	{
		CString str;
		str.LoadString(IDS_SERVER_IP_NOT_NULL);
		MessageBox(str);
		return;
	}	 
	
	m_uServerIP=inet_addr(m_strServerIP);
	
	CClientApp* pApp=(CClientApp*)AfxGetApp();
	BeginWaitCursor();
		CString pwd,pwd1;
		
		m_pwd.GetWindowText(pwd);
		m_pwd1.GetWindowText(pwd1);

		//如果密码为空,或者密码和确认密码不同
		if(pwd.IsEmpty()||pwd!=pwd1)
		{
			EndWaitCursor();
			CString str;
			str.LoadString(IDS_FILL_PWD_ERROR);
			MessageBox(str);
			m_pwd.SetWindowText("");
			m_pwd1.SetWindowText("");
			m_pwd.SetFocus();			
			return;
		}
		m_strPassword=pwd;
		CString str;

		//获取IP和端口号
		msg.tarIP=m_uServerIP;
		msg.nPort=m_uServerPort;

		msg.index=APPLY_ID_LOGIN;
		m_country.GetWindowText(msg.Country);
		m_age.GetWindowText(msg.Age);
		m_province.GetWindowText(msg.Province);
		m_city.GetWindowText(msg.City);

		m_name.GetWindowText(msg.Name);
		msg.Password=pwd;
		if(m_allowall.GetCheck())msg.Canbeadd=1;
		else if(m_needcheck.GetCheck())msg.Canbeadd=2;
		else msg.Canbeadd=0;

		msg.PhotoId=m_headbmp.GetCurSel();

		int sex_sel;
		sex_sel=m_sex.GetCurSel();
		if(sex_sel==CB_ERR)sex_sel=2;
		msg.Sex=sex_sel;

		SetTimer(1,TimeWaitForRes+1000,NULL);
		pApp->m_Socket.SendDataDirect(&msg);
}

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

⌨️ 快捷键说明

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