欢迎来到天天文库
浏览记录
ID:25791919
大小:204.51 KB
页数:12页
时间:2018-11-22
《MFC+Winsock类cs聊天程序开发.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、案例开发与分析——聊天程序的开发一、客户端任务1:创建客户端框架程序,设计用户界面,并实现与服务器的连接。1.创建一个空白工作区,并命名为Chat。2.在Chat工作区,用MFCAppWizard创建基于对话框的项目ChatClient,并在Step2中选中WindowsSocket选项。3.在对话框中添加控件,如下图所示:4.对话框中的控件属性如下表:表1控件属性控件类型控件IDCaption其他ListBoxIDC_LIST_MESSAGE不选SortListBoxIDC_LIST_ONLINE_USERS不选SortEditBoxIDC_EDIT
2、_MESSAGE选中Multiline和VerticalScrollRadioButtonIDC_RADIO_GROUP群聊RadioButtonIDC_RADIO_PRIVATE私聊ButtonIDC_BUTTON_LOGIN登录ButtonIDC_BUTTON_LOGOUT退出5.用ClassWizard为控件对象定义相应的成员变量,如下表所示:表2控件对应成员变量控件ID控件类型成员变量名IDC_EDIT_MESSAGECStringm_strMessageIDC_LIST_MESSAGECListBoxm_listMessageIDC_LIST
3、_ONLINE_USERSCListBoxm_listUsers121.添加对话框,ID为IDD_DIALOG_LOGIN,Caption为“登录”。2.在对话框中添加控件,如下图所示:3.对话框中的控件属性如下:表3登录对话框控件属性控件类型控件IDCaption其他EditBoxIDC_EDIT_IPEditBoxIDC_EDIT_PORTEditBoxIDC_EDIT_USERNAMEEditBoxIDC_EDIT_PASSWORD选Styles->PasswordButtonIDOK连接选Styles->DefaultButtonButtonI
4、DCANCEL取消4.添加一个新类,类名为CLoginDlg,基类为CDialog,DialogID为IDD_DIALOG_LOGIN。5.用ClassWizard为对话框的控件对象定义成员变量,如下表所示:表4登录对话框控件对应成员变量控件ID控件类型成员变量名IDC_EDIT_IPCStringm_strIPIDC_EDIT_PASSWORDCStringm_strPasswordIDC_EDIT_PORTUINTm_nPortIDC_EDIT_USERNAMECStringm_strUserName6.为CChatClientDlg类添加“登录”
5、按钮的单击事件消息处理函数OnButtonLogin(),并添加如下代码:CLoginDlgdlg;intnRet=-1;nRet=dlg.DoModal();7.在ChatClientDlg.cpp中添加:#include"LoginDlg.h"。编译项目并运行,单击登录按钮,看看运行情况。此时单击退出按钮无反应,tellmewhy?121.添加一个从CSocket类派生的新类CMySocket,添加类型为CChatClientDlg*的成员变量m_pDlg,并修改默认构造函数和析构函数如下:(注意,也应修改类声明中的构造函数原型)CMySocket
6、::CMySocket(CChatClientDlg*pDlg){m_pDlg=pDlg;}CMySocket::~CMySocket(){m_pDlg=NULL;}在CMySocket类的头文件中,添加前置声明:classCChatClientDlg;。2.为CChatClientDlg类添加类型为CMySocket*的成员变量m_pMySocket,类型为BOOL的成员变量m_bGroupChat。在CChatClientDlg类的头文件中,添加前置声明:classCMySocket;。3./////在CChatClientDlg::OnInitD
7、ialog()中添加如下代码://TODO:Addextrainitializationherem_bGroupChat=TRUE;//默认聊天方式为群聊((CButton*)GetDlgItem(IDC_RADIO_GROUP))->SetCheck(TRUE);//设置群聊按钮被选中((CButton*)GetDlgItem(IDC_BUTTON_LOGOUT))->EnableWindow(FALSE);((CEdit*)GetDlgItem(IDC_EDIT_MESSAGE))->EnableWindow(FALSE);//设置编辑框不可用4.
8、在CChatClientDlg类的OnButtonLogin()中添加如下代码:voidCCh
此文档下载收益归作者所有