📄 d077.bmp.txt
字号:
typedef CList <SOCKET, SOCKET&> SOCKET_ARRAY;
CList在文件afxtempl.h中声明。
2)添加非阻塞网络事件处理函数。为了响应非阻塞的网络事件,需要在对话框类中分
别为服务器和客户机增加一个消息处理函数。
首先,分别在对话框类的头文件ChatRoomDlg.h中增加两个自定义消息:
#define SER_MESSAGE WM_USER +100
#define CLI_MESSAGE WM_USER + 101
其中,SER_MESSAGE和CLI_MESSAGE分别作为上述两个类WSAAsyncSelect0函数
的参数,WM_USER为用户定义消息的起点,一般从+100开始。
其次,在ChatRoomDlg.h文件为CChatRoomDlg类添加两个函数的声明:
afx_msg LRESULT OnServerMessage(WPARAM wParam, LPARAMIParam);
afx_msg LRESULT OnClientMessage(WPARAM wParam, LPARAM IParam);
然后,在ChatRoomDlg.cpp文件中的BEGIN_MESSAGE_MAP(CChatRoomDlg.CDialog)
和END_MESSAGE_MAPO之间增加如下代码,将函数与消息关联起来:
ON_MESSAGE(SER_MESSAGE, OnServerMessage)
ON_MESSAGE(CLI_MESSAGE, OnClientMessage)
最后,在ChatRoomDlg.cpp中添加详细的消息处理函数代码,详细代码如下:
LRESULT CExamplelDlg::OnServerMessage(WPARAM wParam, LPARAM lParam)
{
SOCKET socket,ts;
int length,i,j ;
CString str="";
CEdit * output=NULL;
char s[1024J;
int len;
switch(IParam)
{
case FD_ACCEPT:
socket= accept(m_server.m_hSocket,NULL,NULL);
length=m_connectionList.GetCount0;
for(i=O;i<length;i++)
{
ts=m_connectionList.GetAt(m_connectionList.Findlndex (i》 ;
s[O]=NULL;
strcat(s," -令游客进入了 ~p天室”);
send(ts,s,strlen(s),0);
}
m_sShowText+="\n";
m_sShowText+="-AI游客进入了聊天室 T ";
GetDlgItem(IDC_SHOWTEXT)->SetWindowText(m_sShowText);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -