background image

为局域网聊天软件的实现奠定了理论基础。

 

界面实现

       因为这个程序其实并不设计什么算法性的代码,连数据查找我用的貌似也是 STL 的
find 方法,所以对于程序的网络代码我并不想将太多,意义不大,等会介绍下核心类的接
口就算完事了,先介绍界面的设计。

看着

win 低画质的界面,顿时觉得,Win7 下高画质的界面好多啦~

         首先,主界面中有 2 个 Edit 编辑控件,一个 List 控件,两个按钮。在 list 控件中包含了
两个列,目前仅仅对第一个

IPAddr 进行了使用。在线设备在 list 控件中会显示出来其 IP 地

址。

         目前仅做了双击显示出来的在线项弹出聊天对话框的功能,其余尚未添加。而且按下
空格和

Enter 键会直接退出程序。这个问题属于还未处理好的键盘消息响应。

1)       当有数据报到来并且完成接收后如何通知子窗口并且显示出来?

         CLANChat 构造函数的参数为一个 CDialog 的指针。而在主对话框程序中,作为显示的
Dialog 对话框派生类包含一个 CLANChat 的对象。在对话框对象启动的时候,在其构造函数
的参数列表中为

CLANChat 对象传入 this 指针,用于其初始化。这样对于到来的消息,在未

弹出窗口的情况下,就能够根据对话框窗口的句柄使用

postmessage 函数将消息派发出去。

         同时 CLANChat 类中的在线列表是一个 vector 模板,作为其类型参数的是专门设计的
OnLineNode 类,其中包含了指向字聊天对话框窗口的指针。

 

1

 

class

 OnLineNode

 

2

 {

 

3

     

public

:

 

4

     

//当年一个小小结构体,如今都需要做构造函数了……

 

5

    OnLineNode();

 

6

     

//结构体和类在添加数据上确实很有优势~

 

7

     SOCKET sClient;

//I like this name

 

8

     sockaddr_in sa_in;

//保存和客户端的 IP 信息

 

9

     vector<CString> vec_str_ChatHistory;

//在这聊天记录也做了,全职保姆……

10

     CDialog * pDlg;

//指向与自己相绑定的对话框对象。

11

     

//用于支持 STL 方法