16,472
社区成员
发帖
与我相关
我的任务
分享
DWORD WINAPI Funproc(LPVOID lpparameter){//这是线程函数,发送消息,下面的是消息响应函数
char recvBuf[100];
char tempBuf[100];
HWND hwnd = ((recvThread*)lpparameter)->h_Dlg;
SOCKET sock = ((recvThread*)lpparameter)->sockSrv;
SOCKADDR_IN addrRecv;
int len = sizeof(SOCKADDR);
int retval;
while (TRUE)
{
retval = recvfrom(((recvThread*)lpparameter)->sockSrv, recvBuf, sizeof(recvBuf), 0, (sockaddr*)&addrRecv, &len);
if (retval == SOCKET_ERROR)
{
break;
}
sprintf(tempBuf, "%s say: %s ", inet_ntoa(addrRecv.sin_addr), recvBuf);
//////////////////////////////////////////////////////////////前面不太重要
::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tempBuf);//发送消息,这里tempBuf不是空值
}
return 0;
}
void CChatToolDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
CString str=(char*)wParam; //这里的str是空值,不知道为什么???
CString strTemp;
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
SetDlgItemText(IDC_EDIT_RECV,str);
}