字体
第(5/6)页
关灯
   存书签 书架管理 返回目录
中声明宏

    IMPLEMENT_DYNAMIC(CChatSocket, CSocket)。

    另外还要在该类中加入成员变量CChatClientDoc* m_pDoc,它是与CChatSocket 关联的

    文档类,很多数据处理工作在文档类中完成。

    为该类增加一个新的构造函数CChatSocket(CChatClientDoc* pDoc),代码如下:

    CChatSocket::CChatSocket(CChatClientDoc* pDoc)

    {

    m_pDoc = pDoc;

    }

    重载OnReceive()函数virtual void OnReceive(int nErrorCode),代码如下:

    void CChatSocket::OnReceive(int nErrorCode)

    {

    //调用CSocket 的OnReceive 函数

    CSocket::OnReceive(nErrorCode);

    //其余工作jiāo给文档类处理

    m_pDoc->ProcessReceive();

    }

    其中,ProcessReceive()函数是CChatClientDoc 类的一个成员函数,在后面将会介绍它的

    具体实现。

    最后,在文件“ChatSocket.h”的类定义外面加入类声明class CChatClientDoc,在文件

    “ChatSocket.cpp”的头部加入语句#include "ChatClientDoc.h"。

    至此,CchatSocket 类创建完毕。

    4.创建登录对话框

    通过登录对话框,用户可以登录到服务器,该对话框如图11-11 所示。其中,对话框的

    ID 为IDD_LOGDLG,3 个Edit 控件的ID 依次为IDC_SERVER、IDC_PORT 和IDC_NAME。

    为对话框新建一个类CLogDlg,对应3 个控件,为其添加3 个成员变量,即CString m_Server、

    int m_Port 和CString m_Ncom,并将m_Port 初始化为2000。

    图11-11 登录对话框

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·314·

    然后,在菜单栏中为其新建一个菜单项,当单击该菜单项时,就会弹出登录对话框。为

    了方便,可以再建一菜单项,用于断开连接,如图11-12 所示。

    图11-12 登录对话框对应菜单栏

    其中,连接菜单项的ID 为ID_CONNECT,断开菜单项的ID 为ID_DISCONNECT。

    5.实现CChatClientDoc 类

    同服务器端的实现一样,客户端大量的工作都是在CChatClientDoc 类中实现的。在开始

    编写代码前,首先在文件“ChatClientDoc.h”中CChatClientDoc 类定义的前面加入如下的类

    声明语句:

    class CChatSocket;

    class CMs
上一页 目录 下一页