我在MFC中添加了一个.cpp文件,里面有一个线程,可在对话框上的按钮的响应事件中AfxBeginThread报错
我在
OnStart()里面
{
AfxBeginThread(ServerThreadProc,GetSafeHwnd(),THREAD_PRIORIT_NORMAL);
}
再server.cpp里我
#include <stdafx.h>
#define SERVERMAXBUF 5000
#define MAXLINELENGTH 100
SOCKET s=socket(AF_INET,SOCK_STREAM,0);
CString m_Defualtfile="store.txt";
UINT ServerThreadProc(LPVOID pParam)
{
SOCKADDR_IN sockSrc;
sockSrc.sin_family=AF_INET;
sockSrc.sin_port=htons(80);
sockSrc.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
if(!bind(s,(SOCKADDR*)&sockSrc,sizeof(SOCKADDR)))
{
AfxMessageBox("没有绑定,按确定重新绑定");
bind(s,(SOCKADDR*)&sockSrc,sizeof(SOCKADDR));
}
else
{
listen(s,10);
int len=sizeof(SOCKADDR_IN);
SOCKADDR_IN addrClient;
SOCKET sockClient=accept(s,(SOCKADDR*)&addrClient,&len);
AfxBeginThread(ServerThreadProc,pParam,THREAD_PRIORITY_NORMAL);
char buf[SERVERMAXBUF];
memset(buf,0,SERVERMAXBUF);
recv(sockClient,buf,SERVERMAXBUF,0);
CStdioFile file;
if(file.Open(m_Defualtfile,CFile::modeCreate|CFile::modeReadWrite|CFile::typeText)==0)
{
CString filename;
filename=m_Defualtfile+"文件创建失败!";
AfxMessageBox(filename);
}
else
{
file.Write(buf,SERVERMAXBUF);
file.Close();
}
}
return 0;
}
可是它却告诉我
AfxBeginThread(ServerThreadProc,GetSafeHwnd(),THREAD_PRIORIT_NORMAL);
这里的ServerThreadProc 是没有定义的标识符,我要怎么才能关联再一起啊
问题点数:0、回复次数:5Top
1 楼ydzqw(BE BIG)回复于 2003-06-01 16:13:11 得分 0
没在dialog的Cpp里包含thread cpp的头文件吧Top
2 楼awnuce1(猎狐19748778)回复于 2003-06-01 16:13:51 得分 0
就一个CPP,没有头文件Top
3 楼nuaawenlin(飘人)回复于 2003-06-01 16:33:37 得分 0
AfxBeginThread(ServerThreadProc,pParam,THREAD_PRIORITY_NORMAL);
不应该在线程中使用。
Top
4 楼etboy327(etboy)回复于 2003-06-01 16:42:03 得分 0
把这个线程放到你的那个有按钮响应函数的cpp文件前头试试。Top
5 楼ccwing(不是背书郎)回复于 2003-06-01 16:50:11 得分 0
在OnStart()那个文件里面的OnStart()之前加入:
UINT ServerThreadProc(LPVOID pParam);Top




