g()函数编写如下代码:
void CChatClientDoc::SendMsg(CString& strText, int mCode, BOOL bSendHandle)
{
if (m_pArchiveOut != NULL)
{
CMsg msg;
msg.code = mCode;
msg.m_strText = (bSendHandle ? m_strNcom + _T(": ") + strText : strText);
TRY
{
msg.Serialize(*m_pArchiveOut);
m_pArchiveOut->Flush();
}
CATCH(CFileException, e)
{
m_pArchiveOut->Abort();
delete m_pArchiveOut;
m_pArchiveOut = NULL;
CString strTemp;
strTemp.Format("发送失败");
DisplayMsg(strTemp);
}
END_CATCH
}
}
为ProcessReceive()函数编写如下代码:
void CChatClientDoc::ProcessReceive()
{
do
{
ReceiveMsg();
if (m_pSocket == NULL)
return;
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·318·
}
while(!m_pArchiveIn->IsBufferEmpty());
}
为ReceiveMsg()函数编写如下代码:
void CChatClientDoc::ReceiveMsg()
{
CMsg msg;
TRY
{
msg.Serialize(*m_pArchiveIn);
if(msg.code == SENDING_CHATTERS_LIST)
{
//更新用户列表
UpdateChattersList(&msg);
return;
}
if(msg.code == USED_NAME)
{
//如果是用户名已存在信息则关闭连接,退出
AfxMessageBox(msg.m_strText);
msg.m_bClose = TRUE;
OnDisconnect();
return;
}
//显示消息
DisplayMsg(msg.m_strText);
}
CATCH(CFileException, e)
{