DWORD WINAPI CSelectClientDlg::RecvProc(LPVOID lparam)
{
SOCKET s=((RECVPARAM*)lparam)->h_sock;
HWND h=((RECVPARAM*)lparam)->h_wnd;

SOCKADDR_IN addrRemote;
int nLen = sizeof(addrRemote);
char sz[256];
while(1)
{

CString str;
str.Format("第%d次收消息",n++);
    AfxMessageBox(str);//这行也可以不要也能得到结果

int nRet =recvfrom(s, sz, 256, 0, (sockaddr*)&addrRemote, &nLen);
if(nRet > 0)
{
sz[nRet] = '\0';
::SendMessage(h,WM_ADD,(WPARAM)&sz,0);
}
                                    else AfxMessageBox("没有收到消息!");
}

return 1;
}
void CSelectClientDlg::OnAdd(WPARAM wparam,LPARAM lparam)
{
char *host=new char[256];
strcpy(host,(char*)wparam);
((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString(host);
}这是通过一个线程不断接收字符串,然后通过消息函数将字符串添加到组合框里。问题在红色那段,把那段给去掉就会弹出("没有收到消息!");加上那个就能成功得到结果。这个是什么原因?怎么样解决