MFC问题。
程序目标:制作一个简单的聊天室,分别是客服端和服务器端两个程序,客户端和服务器端都是同样的一个问题报错。
报错原因:cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
None of the functions with this name in scope match the target type
代码,此程序位服务器端程序
void CLtsDlg::OnButtonQidong()
{
// TODO: Add your control notification handler code here
CreateThread(NULL,0,LinsenThread,this,NULL,NULL);//创建一个新线程,就是此处报错
}
ULONG WINAPI CLtsDlg::LinsenThread(LPVOID p){
CStringArray m_chater;
struct MEG
{
char ip[20];
char name[20];
char data[200];
}Meg,*pMeg;
CLtsDlg *pDlg=(CLtsDlg *)p;
CSocket m_ReceiveSocket;
char *buff[256];
CString data,name,chatIP;
m_ReceiveSocket.Create(8888,SOCK_DGRAM);
while(1){
m_ReceiveSocket.Receive(buff,256);
pMeg=(struct MEG*)buff;
data=pMeg->data;
name=pMeg->name;
if(data.IsEmpty()&&name.IsEmpty())
continue;
data=name+"说: "+data;
pDlg->m_show.InsertString(-1,data);
//判断发来信息的聊天者IP是否已存入聊天者列表
chatIP=pMeg->ip;
CString listIP;
bool flag=0;
int len=m_chater.GetSize();
//判断列表中是否已存在该用户
for(int i=0;i<=len;i++){
if(chatIP==m_chater.GetAt(i)){
flag=1;//列表中已存在该IP,则设为1
break;
}
}
if(!flag)
m_chater.Add(chatIP);
//把信息发送给列表中的每个客户
len=m_chater.GetSize();
for(int k=0;k<len;k++){
listIP=m_chater.GetAt(k);
//转发数据给其他聊天者
m_ReceiveSocket.SendTo(pMeg,sizeof(Meg),6666,listIP);
}
memset(buff,0,256);
}
m_ReceiveSocket.Close();
return 0;
}
[解决办法]