载的串行化函数的代码如下:
void CMsg::Serialize(CArchive& ar)
{
//读入
if (ar.IsStoring())
{
ar << (WORD)m_bClose;
ar << m_strText;
ar << code;
}
//输出
else
{
WORD wd;
ar >> wd;
m_bClose = (BOOL)wd;
ar >> m_strText;
枫叶文学网www.fywxw.com
第11 章 网络编程
·291·
ar >> (UINT)code;
}
}
(3)编写客户端信息界面
封装好消息类后,接下来要对界面编写代码。在上小节的设计中已经说明,服务器端应
有两个窗口,一个用来显示各客户端的信息,另一个用来显示聊天信息。
首先编写显示各客户端信息的界面。与创建消息类的步骤一样,为工程新建一个类,取
名为CChattersListView,在“Class type”下拉列表中选择“MFC Class”项,在“Base class”
下拉列表中选择“ClistView”作为其父类,设置完成后单击“OK”按钮即可,如图11-6 所
示。
图11-6 新建类CChattersListView
然后为该类添加成员变量int m_Row,它记录列表视图的当前行的位置,在类的构造函
数中将其初始化为0。
接下来添加各成员函数并为其编写代码。首先重载函数virtual BOOL
PreCreateWindow(CREATESTRUCT& cs),通过此函数可以设定窗口风格。代码如下:
BOOL CChattersListView::PreCreateWindow(CREATESTRUCT& cs)
{
//设定风格为详细报表显示
cs.style |= LVS_REPORT;
return CListView::PreCreateWindow(cs);
}
接着在窗口创建时进行初始化。打开“ClassWizard”对话框,在“Class ncom”下拉列
表中选择CChattersListView,在“Message”列表中选择WM_CREATE(如图11-7 所示)。
然后依次单击“Add Function”按钮和“Edit Code”按钮,定位到OnCreate()函数,添加如下
代码:
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·292·
图11-7 为WM_CREATE 消息添加响应函数
int CChattersListView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnC