网络聊天系统实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
RECT wndRect;
GetDesktopWindow()->GetWindowRect(&wndRect);
if(m_wndSplitter1.CreateStatic(this,2,1)==NULL)return FALSE;
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CBottomView),CSize(0,0),pContext);
菜单栏:设置
这个菜单有5个子菜单,其功能分别是:
清屏:清楚所有显示的聊天内容,还你一个空白的区域。
改名:可以更改你的昵称,而不用退出程序或断开重连。
屏蔽一个人:如果有一个人实在讨厌,你不愿意见到他或她发的任何消息和内容,那么你可以用这个功能把他或她屏蔽了,你将见不到他或她发的任何消息和内容。
保存聊天记录:如果你觉的聊天内容有价值,你可以用这个功能保存下来。
3.本程序的优点
(1)界面优美
(2)使用方便
(3)运行快速
(4)功能多样
以下是本人的得意代码:
1.这一段代码实现了本程序窗口分割,使本程序的几个“视“显示的恰到好处。
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext *pContext)
悄悄话:Check Box控件,如果你选择了这个单选框,那么你给谁发送的消息其他人就看不到了,也就是私聊功能。
图片表情:按钮控件,如果你在“添加图片表情“那选择了一个图片表情,那么这个控件上就会显示相应的图片表情。
添加图片表情:按钮控件,如果你要发送图片,就点击一下你要发送的图片,如果不要就点击“无“这个按钮。
工具栏:复制
与菜单栏的开始—复制相联系。
工具栏:传输文件
与菜单栏的文件—传输文件相联系。
工具栏:关于
与菜单栏的关于—关于Chat相联系。
②、创建服务器界面
单击创建服务器跳出的对话框:可以输入昵称、端口号,也可以选择头像。
创建客户端界面
单击连接服务器跳出的对话框:可以输入昵称、你要连接的服务器的IP、服务器的端口号、你要选择的头像。
{
GetDlgItem(IDC_EDIT_MSG)->SetFocus();
CFormView::OnInitialUpdate();
m_cmbObject.SetCurSel(0);
m_cmbFace.SetCurSel(0);
//
CBitmap bitmap;
bitmap.LoadBitmap(IDB_SEND);
pbutton=(CButton*)GetDlgItem(IDC_ONLYFACE);
pbutton->SetBitmap(hbitmap);
//
bitmap.LoadBitmap(IDB_WU);
hbitmap=(HBITMAP)bitmap.Detach();
pbutton=(CButton*)GetDlgItem(IDC_WUFACE);
在这个控件中,有N行两列,第一列按行显示每个用户的头像,
第二列按行显示对应头像的用户昵称。如右图示:
在信息区下就是用户的操作区,是一个对话框,有许多控件,其上有:
对象:组合框控件,显示“所有人“和新加入的聊天用户,可以选择你要发送消息的对象。
动作:组合框控件,显示各种动作,选择一种动作,发送消息时,就会显示相应动作的文字信息。
return TRUE;
}
2.这一段是聊天系统中最常用的一种消息传送函数,版本很多,不过我仍然觉的我写的这个函数很好,毕竟我的消息发送都靠它的。
void CMsg::Serialize(CArchive &ar)
{
if(ar.IsStoring())
{
ar<<command;
ar<<m_strFrom;
接受文件界面
如果有文件传输过来自动跳出的对话框:可以单击接受文件,来选择一个地方保存传输过来的文件。
关于Chat界面
单击菜单关于Chat跳出的对话框:显示版本信息,制作信息,和一些说明。
③、用户操作界面及介绍
对象:选择要聊天或发送信息文件的对象
动作:选择聊天时要用文字表达的动作
悄悄话:选择秘密聊天,不让别人看见
更改昵称界面
单击改名菜单跳出的对话框:输入新昵称按确定便可以实现功能。
保存聊天记录界面
单击保存聊天记录跳出的对话框:可以输入你自己想要的名字保存为txt文件。
载入聊天记录界面
单击载入聊天记录跳出的对话框:可以输入你自己想要找的名字载入txt文件。
传输文件界面
单击传输文件跳出的对话框:可以单击选择文件,来选择一个文件传输。
添加图片表情:选择聊天时所要发送的图片
表情。
文字输入框:输入你要说的话。
图片表情:显示马上要发送的图片表情。
发送: 发送你要说的话和做的表情按这个按钮。
本人的相关信息
2.创作过程
在一开始时我觉的聊天系统很简单,准备把它和五字棋结合起来。所以我的设计方案就是在可能的情况下结合五子棋和聊天系统。开始制作后,我选择的是用对话框作为主界面。可是随着制作的深入和了解到的知识越来越多,我感觉到结合五子棋和聊天系统,只会使两个程序都处于低级状态,无法提高,所以我决定专攻聊天系统。当我的聊天系统成型后,我发现用对话框做的聊天室很难在有提高和升级的潜力。为了得到更多的锻炼,我毅然放弃了已成型的对话框聊天系统,开始向单文档的视图界面进发。经过几个不眠不休的夜晚,我终于做出了现在的这个程序。它还有很多发展潜力,可是由于时间的原因,我只能把最重要的功能完成了。其他功能是不一定必须的,可是可以扩展,这是本程序的特点之一。
HBITMAP hbitmap=(HBITMAP)bitmap.Detach();
CButton *pbutton=(CButton*)GetDlgItem(ID_FASONG);
pbutton->SetBitmap(hbitmap);
//
bitmap.LoadBitmap(IDB_WU);
hbitmap=(HBITMAP)bitmap.Detach();
if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,1,2,WS_CHILD|WS_VISIBLE,m_wndSplitter1.IdFromRowCol(0,0))==NULL)return FALSE;
m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CRightView),CSize(0,0),pContext);
载入聊天记录:如果你想看看以前的聊天记录,你可以用这个功能把以前的记录载入到显示屏。
菜单栏:文件
这个菜单有一个子菜单,其功能是:
传输文件:如果你有文件要发给好友,那么你可以有这个功能来实现。
菜单栏:查看
这个菜单有两个子菜单,其功能是:
工具栏:选择后工具栏消失,如再选择则重新出现。
状态栏:选择后状态栏消失,如再选择则重新出现。
ar<<m_strTo;
ar<<m_strSay;
ar<<m_IP;
ar<<m_strFace;
ar<<m_strHead;
ar<<oneface;
}
else
{
ar>>command;
ar>>m_strFrom;
ar>>m_strTo;
ar>>m_strSay;
ar>>m_IP;
ar>>m_strFace;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CChatView),CSize(wndRect.right-150,0),pContext);
m_wndSplitter1.SetRowInfo(0,wndRect.bቤተ መጻሕፍቲ ባይዱttom-230,0);
SetActiveView((CBottomView *)m_wndSplitter1.GetPane(1,0));
连接服务器:连接服务器,如果成功就可以发送和接收服务器的消息,进行聊天。
复制:复制聊天聊天的内容。
菜单栏:结束
这个菜单有三个子菜单,其功能分别是:
关闭服务器:这一项只有在建立了服务器后才有效,用于关闭服务器。
退出聊天室:这一项只有你是当客户端连接了一个服务器后才有效,用于断开与服务器的连接。
关闭程序:退出这个程序。
{
CHARFORMAT cf=GetCharFormat();
if(cf.dwEffects&CFE_AUTOCOLOR)cf.dwEffects-=CFE_AUTOCOLOR;
cf.crTextColor=clr;
cf.dwMask=CFM_COLOR;
SetSelectionCharFormat(cf);
发送:按钮控件,如果要发送消息就单击这个按钮。
制作信息:关于本人的信息。
如图示:
在往下就是状态栏:从左到到右依次是:状态,在线人数,本人相关信息。如图示:
(2)分界面截图及介绍
①、菜单栏和工具栏
(注:以下的菜单均有快捷键,可看截图来记住)
菜单栏:开始
这个菜单有三个子菜单,其功能分别是:
创建服务器:创建一个服务器,用于接听客户端的连接信息。
ar>>m_strHead;
ar>>oneface;
}
m_strUserList.Serialize(ar);
m_strHeadList.Serialize(ar);
}
3.这一段代码我在对话框上加载了超过30张的位图,还不错的函数。
void CBottomView::OnInitialUpdate()
CButton *pbutton=(CButton*)GetDlgItem(IDC_BUTTON1+i);
pbutton->SetBitmap(hbitmap);
}
}
4.这段代码使我可以设置RichEdit上显示文字的颜色,我觉的很有用。
void CAutoRich::SeletColor(COLORREF clr)
网络聊天系统实验报告
1.功能介绍
(1)本程序的主界面截图及介绍
本程序的风格是清新明亮,代表着健康向上,偏向于为年轻人设计。
主色调是蓝色,与白色搭配,有一种天马行空的感觉。让人时刻感受着蓝天白云,使使用者不会因为长久对着这个界面而感到厌倦。
本程序是用MFC的单文档模式,支持SOCKET。集服务器与客户端于一身,既可用来当服务器,也可当客户端来连接服务器,并且不影响相互之间的功能。
AfxInitRichEdit();//显示带有RichEdit的对话框必须的函数
工具栏下左边的大片空白区域是显示聊天记录、系统信息、用户信息、用户表情等等文字和图片信息的地方,用户相互之间聊天,聊天的内容就是都显示在这上面的。它是RichEdit控件,嵌在FORM的对话框上,使用“视”来显示这个控件。如图:
工具栏下右边的长方形,是List Control控件嵌在FORM的对话框中。
pbutton->SetBitmap(hbitmap);
//
int i;
bfacetemp=-1;
for(i=0;i<26;i++)
{
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1+i);
HBITMAP hbitmap=(HBITMAP)bitmap.Detach();
菜单栏:帮助
这个菜单有一个子菜单,其功能是:
关于Chat:选择后跳出一个对话框,显示关于本软件的一些信息。
工具栏:创建服务器
与菜单栏的开始—创建服务器相联系。
工具栏:连接服务器
与菜单栏的开始—连接服务器相联系。
工具栏:关闭服务器
与菜单栏的结束—关闭服务器相联系。
工具栏:退出服务器
与菜单栏的结束—退出服务器相联系。
}
5.以下四个函数虽然简单,可是功能却是大的可怕,没有他们程序动不了。
SetDialogBkColor(RGB(157,199,253), RGB(255,255,255));//设置对话框的背景和字的颜色。
CoInitialize(NULL);//在RichEdit中加载位图是必须的函数
CoUninitialize();//上个函数的释放函数
标题栏上显示着本软件的名称:NN聊天器。NN是本人象征,聊天器是本软件功能的代名词。如图:
标题栏下是菜单栏,其上有:开始、结束、设置、文件、查看、帮助。它们的快捷键分别为:Ctrl+B,Ctrl+O,Ctrl+T,Ctrl+W,Ctrl+V,Ctrl+H。它们的功能下文会详细介绍。如图:
菜单栏下是工具栏,有7个图标,单击它们都能实现一个功能;从左到右分别是用于创建服务器,连接服务器,关闭服务器,退出服务器,复制,传输文件,帮助。如图:
RECT wndRect;
GetDesktopWindow()->GetWindowRect(&wndRect);
if(m_wndSplitter1.CreateStatic(this,2,1)==NULL)return FALSE;
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CBottomView),CSize(0,0),pContext);
菜单栏:设置
这个菜单有5个子菜单,其功能分别是:
清屏:清楚所有显示的聊天内容,还你一个空白的区域。
改名:可以更改你的昵称,而不用退出程序或断开重连。
屏蔽一个人:如果有一个人实在讨厌,你不愿意见到他或她发的任何消息和内容,那么你可以用这个功能把他或她屏蔽了,你将见不到他或她发的任何消息和内容。
保存聊天记录:如果你觉的聊天内容有价值,你可以用这个功能保存下来。
3.本程序的优点
(1)界面优美
(2)使用方便
(3)运行快速
(4)功能多样
以下是本人的得意代码:
1.这一段代码实现了本程序窗口分割,使本程序的几个“视“显示的恰到好处。
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext *pContext)
悄悄话:Check Box控件,如果你选择了这个单选框,那么你给谁发送的消息其他人就看不到了,也就是私聊功能。
图片表情:按钮控件,如果你在“添加图片表情“那选择了一个图片表情,那么这个控件上就会显示相应的图片表情。
添加图片表情:按钮控件,如果你要发送图片,就点击一下你要发送的图片,如果不要就点击“无“这个按钮。
工具栏:复制
与菜单栏的开始—复制相联系。
工具栏:传输文件
与菜单栏的文件—传输文件相联系。
工具栏:关于
与菜单栏的关于—关于Chat相联系。
②、创建服务器界面
单击创建服务器跳出的对话框:可以输入昵称、端口号,也可以选择头像。
创建客户端界面
单击连接服务器跳出的对话框:可以输入昵称、你要连接的服务器的IP、服务器的端口号、你要选择的头像。
{
GetDlgItem(IDC_EDIT_MSG)->SetFocus();
CFormView::OnInitialUpdate();
m_cmbObject.SetCurSel(0);
m_cmbFace.SetCurSel(0);
//
CBitmap bitmap;
bitmap.LoadBitmap(IDB_SEND);
pbutton=(CButton*)GetDlgItem(IDC_ONLYFACE);
pbutton->SetBitmap(hbitmap);
//
bitmap.LoadBitmap(IDB_WU);
hbitmap=(HBITMAP)bitmap.Detach();
pbutton=(CButton*)GetDlgItem(IDC_WUFACE);
在这个控件中,有N行两列,第一列按行显示每个用户的头像,
第二列按行显示对应头像的用户昵称。如右图示:
在信息区下就是用户的操作区,是一个对话框,有许多控件,其上有:
对象:组合框控件,显示“所有人“和新加入的聊天用户,可以选择你要发送消息的对象。
动作:组合框控件,显示各种动作,选择一种动作,发送消息时,就会显示相应动作的文字信息。
return TRUE;
}
2.这一段是聊天系统中最常用的一种消息传送函数,版本很多,不过我仍然觉的我写的这个函数很好,毕竟我的消息发送都靠它的。
void CMsg::Serialize(CArchive &ar)
{
if(ar.IsStoring())
{
ar<<command;
ar<<m_strFrom;
接受文件界面
如果有文件传输过来自动跳出的对话框:可以单击接受文件,来选择一个地方保存传输过来的文件。
关于Chat界面
单击菜单关于Chat跳出的对话框:显示版本信息,制作信息,和一些说明。
③、用户操作界面及介绍
对象:选择要聊天或发送信息文件的对象
动作:选择聊天时要用文字表达的动作
悄悄话:选择秘密聊天,不让别人看见
更改昵称界面
单击改名菜单跳出的对话框:输入新昵称按确定便可以实现功能。
保存聊天记录界面
单击保存聊天记录跳出的对话框:可以输入你自己想要的名字保存为txt文件。
载入聊天记录界面
单击载入聊天记录跳出的对话框:可以输入你自己想要找的名字载入txt文件。
传输文件界面
单击传输文件跳出的对话框:可以单击选择文件,来选择一个文件传输。
添加图片表情:选择聊天时所要发送的图片
表情。
文字输入框:输入你要说的话。
图片表情:显示马上要发送的图片表情。
发送: 发送你要说的话和做的表情按这个按钮。
本人的相关信息
2.创作过程
在一开始时我觉的聊天系统很简单,准备把它和五字棋结合起来。所以我的设计方案就是在可能的情况下结合五子棋和聊天系统。开始制作后,我选择的是用对话框作为主界面。可是随着制作的深入和了解到的知识越来越多,我感觉到结合五子棋和聊天系统,只会使两个程序都处于低级状态,无法提高,所以我决定专攻聊天系统。当我的聊天系统成型后,我发现用对话框做的聊天室很难在有提高和升级的潜力。为了得到更多的锻炼,我毅然放弃了已成型的对话框聊天系统,开始向单文档的视图界面进发。经过几个不眠不休的夜晚,我终于做出了现在的这个程序。它还有很多发展潜力,可是由于时间的原因,我只能把最重要的功能完成了。其他功能是不一定必须的,可是可以扩展,这是本程序的特点之一。
HBITMAP hbitmap=(HBITMAP)bitmap.Detach();
CButton *pbutton=(CButton*)GetDlgItem(ID_FASONG);
pbutton->SetBitmap(hbitmap);
//
bitmap.LoadBitmap(IDB_WU);
hbitmap=(HBITMAP)bitmap.Detach();
if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,1,2,WS_CHILD|WS_VISIBLE,m_wndSplitter1.IdFromRowCol(0,0))==NULL)return FALSE;
m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CRightView),CSize(0,0),pContext);
载入聊天记录:如果你想看看以前的聊天记录,你可以用这个功能把以前的记录载入到显示屏。
菜单栏:文件
这个菜单有一个子菜单,其功能是:
传输文件:如果你有文件要发给好友,那么你可以有这个功能来实现。
菜单栏:查看
这个菜单有两个子菜单,其功能是:
工具栏:选择后工具栏消失,如再选择则重新出现。
状态栏:选择后状态栏消失,如再选择则重新出现。
ar<<m_strTo;
ar<<m_strSay;
ar<<m_IP;
ar<<m_strFace;
ar<<m_strHead;
ar<<oneface;
}
else
{
ar>>command;
ar>>m_strFrom;
ar>>m_strTo;
ar>>m_strSay;
ar>>m_IP;
ar>>m_strFace;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CChatView),CSize(wndRect.right-150,0),pContext);
m_wndSplitter1.SetRowInfo(0,wndRect.bቤተ መጻሕፍቲ ባይዱttom-230,0);
SetActiveView((CBottomView *)m_wndSplitter1.GetPane(1,0));
连接服务器:连接服务器,如果成功就可以发送和接收服务器的消息,进行聊天。
复制:复制聊天聊天的内容。
菜单栏:结束
这个菜单有三个子菜单,其功能分别是:
关闭服务器:这一项只有在建立了服务器后才有效,用于关闭服务器。
退出聊天室:这一项只有你是当客户端连接了一个服务器后才有效,用于断开与服务器的连接。
关闭程序:退出这个程序。
{
CHARFORMAT cf=GetCharFormat();
if(cf.dwEffects&CFE_AUTOCOLOR)cf.dwEffects-=CFE_AUTOCOLOR;
cf.crTextColor=clr;
cf.dwMask=CFM_COLOR;
SetSelectionCharFormat(cf);
发送:按钮控件,如果要发送消息就单击这个按钮。
制作信息:关于本人的信息。
如图示:
在往下就是状态栏:从左到到右依次是:状态,在线人数,本人相关信息。如图示:
(2)分界面截图及介绍
①、菜单栏和工具栏
(注:以下的菜单均有快捷键,可看截图来记住)
菜单栏:开始
这个菜单有三个子菜单,其功能分别是:
创建服务器:创建一个服务器,用于接听客户端的连接信息。
ar>>m_strHead;
ar>>oneface;
}
m_strUserList.Serialize(ar);
m_strHeadList.Serialize(ar);
}
3.这一段代码我在对话框上加载了超过30张的位图,还不错的函数。
void CBottomView::OnInitialUpdate()
CButton *pbutton=(CButton*)GetDlgItem(IDC_BUTTON1+i);
pbutton->SetBitmap(hbitmap);
}
}
4.这段代码使我可以设置RichEdit上显示文字的颜色,我觉的很有用。
void CAutoRich::SeletColor(COLORREF clr)
网络聊天系统实验报告
1.功能介绍
(1)本程序的主界面截图及介绍
本程序的风格是清新明亮,代表着健康向上,偏向于为年轻人设计。
主色调是蓝色,与白色搭配,有一种天马行空的感觉。让人时刻感受着蓝天白云,使使用者不会因为长久对着这个界面而感到厌倦。
本程序是用MFC的单文档模式,支持SOCKET。集服务器与客户端于一身,既可用来当服务器,也可当客户端来连接服务器,并且不影响相互之间的功能。
AfxInitRichEdit();//显示带有RichEdit的对话框必须的函数
工具栏下左边的大片空白区域是显示聊天记录、系统信息、用户信息、用户表情等等文字和图片信息的地方,用户相互之间聊天,聊天的内容就是都显示在这上面的。它是RichEdit控件,嵌在FORM的对话框上,使用“视”来显示这个控件。如图:
工具栏下右边的长方形,是List Control控件嵌在FORM的对话框中。
pbutton->SetBitmap(hbitmap);
//
int i;
bfacetemp=-1;
for(i=0;i<26;i++)
{
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1+i);
HBITMAP hbitmap=(HBITMAP)bitmap.Detach();
菜单栏:帮助
这个菜单有一个子菜单,其功能是:
关于Chat:选择后跳出一个对话框,显示关于本软件的一些信息。
工具栏:创建服务器
与菜单栏的开始—创建服务器相联系。
工具栏:连接服务器
与菜单栏的开始—连接服务器相联系。
工具栏:关闭服务器
与菜单栏的结束—关闭服务器相联系。
工具栏:退出服务器
与菜单栏的结束—退出服务器相联系。
}
5.以下四个函数虽然简单,可是功能却是大的可怕,没有他们程序动不了。
SetDialogBkColor(RGB(157,199,253), RGB(255,255,255));//设置对话框的背景和字的颜色。
CoInitialize(NULL);//在RichEdit中加载位图是必须的函数
CoUninitialize();//上个函数的释放函数
标题栏上显示着本软件的名称:NN聊天器。NN是本人象征,聊天器是本软件功能的代名词。如图:
标题栏下是菜单栏,其上有:开始、结束、设置、文件、查看、帮助。它们的快捷键分别为:Ctrl+B,Ctrl+O,Ctrl+T,Ctrl+W,Ctrl+V,Ctrl+H。它们的功能下文会详细介绍。如图:
菜单栏下是工具栏,有7个图标,单击它们都能实现一个功能;从左到右分别是用于创建服务器,连接服务器,关闭服务器,退出服务器,复制,传输文件,帮助。如图: