新建一个MFC 工程,取名为ChatServer。利用AppWizard 创建SDI 程序,在第一步中
枫叶文学网www.fywxw.com
第11 章 网络编程
·289·
选择“Single Doccomnt”项,在第四步中选中“Windows Sockets”复选框,如图11-2 所示。
在最后一步的“Base Class”下拉列表中选择“ClistView”作为基类,其他选项保持默认,单
击“Finish”按钮即可完成工程的创建,如图11-3 所示。
图11-2 选中“Windows Sockets”复选框 图11-3 选择“ClistView”作为基类
(2)封装消息类
本程序中为消息建立一个类CMsg,它的父类是CObject。在“ChatServer classes”上单
击右键,在弹出的对话框中选择“New Class”,如图11-4 所示。在弹出的“New Class”对话
框中的“Class type”下拉列表中选择“Generic Class”项,在“Ncom”栏中填写类名称CMsg,
在“Derived From”栏中填写其父类名称CObject,如图11-5 所示。单击“OK”按钮,弹出
提示对话框,单击“确定”即可。
图11-4 为工程新建一个类 图11-5 新建消息类CMsg
在类CMsg的定义(文件“Msg.h”)中加入宏DECLARE_DYNCREATE(CMsg),声明此
宏可以使得由CObject继承来的类在程序运行的时候能够动态地创建。然后为其加入成员变量
和成员函数,分别如表11-5和表11-6所示。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·290·
表11-5 CMsg 类成员变量及其说明
成员变量 说明
CString m_strText 消息的内容
BOOL m_bClose 连接是否关闭
UINT code 消息的种类
表11-6 CMsg 类成员函数及其说明
成员函数 说明
void Init() 对成员变量进行初始化
virtual void Serialize(CArchive &ar) 进行数据的发送和接收
完成消息类的定义后,要在文件“Msg.cpp”中实现此类。首先要声明另外一个宏
IMPLEMENT_DYNCREATE(CMsg, CObject),它是与宏DECLARE_DYNCREATE 相对应的
在类实现时声明的宏。然后为其添加代码。在类的构造函数中对成员变量进行初始化,代码
如下:
CMsg::CMsg()
{
Init();
}
函数Init()代码如下:
void CMsg::Init()
{
code = 0;
m_bClose = FALSE;
m_strText = _T("");
}
最后是重