struct message
{
unsigned int age;
unsigned int workcode;
unsigned int reg;
char username[32];
unsigned int datalen;
char data[100];
} ;
DWORD WINAPI CKaiDlg::RecvProc(LPVOID lpParam)
{
CKaiDlg *pCKaiDlg=(CKaiDlg*)(lpParam);
struct message recvmsg,*pRecvmsg = NULL;
////////////
char *pPostmsgbuf ;
pPostmsgbuf = new char[200];
while(1)
{
memset(pPostmsgbuf, 0, sizeof(pPostmsgbuf));
recvfrom(pCKaiDlg->sockClient,pPostmsgbuf,100,0,(SOCKADDR*)&(pCKaiDlg->addrSrv),&(pCKaiDlg->len));
memcpy(&recvmsg,pPostmsgbuf, sizeof(pPostmsgbuf));
::PostMessage(::FindWindow(NULL,"客户信息显示"),WM_YOURMSG,(WPARAM)pPostmsgbuf,NULL);
}
delete []pPostmsgbuf;
pCKaiDlg->m_Set.Close();
return 0;
}//////////////////////////////////////////////////////////////////
LRESULT CKaiDlg::OnYourMsg(WPARAM wp, LPARAM lp)
{
int getdotleft;
char *handlebuf = new char[200];
handlebuf =( char *)wp;
memset(&handlebuf,0,sizeof(handlebuf));//
struct message handlemsg;
memcpy(&handlemsg, handlebuf, sizeof(handlebuf));// ////////////////
delete []handlebuf;
return 0;
}
pCKaiDlg->OnYourMsg(pPostmsgbuf, NULL);
而且,你的内存那么多分配和拷贝也没有必要,比如recvfrom的参数直接用&recvmsg接收不就可以了?