在用Winsocket传输文件的时候,我开辟一个线程来进行文件的接收过程
在这个线程里面要调用的函数是一个类的成员函数,如下:calss A;static UINT recFileThread(LPVOID Parama);
{
........
Connect(m_ipname,8989);
}其中 m_ipname是该类的一个CString 成员,执行下面线程时:
void CADlg::OnButtonrevFiles()
{
//申明函数
UINT CADlg::recFileThread(LPVOID Parama);
//新建一个线程用来接受文件
AfxBeginThread(recFileThread,this,THREAD_PRIORITY_NORMAL);
}系统报错;
ompiling...
ADlg.cpp
E:\vc++\我的文件\A\ADlg.cpp(706) : error C2597: illegal reference to data member 'CADlg::m_ipname' in a static member function
Error executing cl.exe.好象是说在静态函数里非法引用类的成员,怎么解决呢??
在这个线程里面要调用的函数是一个类的成员函数,如下:calss A;static UINT recFileThread(LPVOID Parama);
{
........
Connect(m_ipname,8989);
}其中 m_ipname是该类的一个CString 成员,执行下面线程时:
void CADlg::OnButtonrevFiles()
{
//申明函数
UINT CADlg::recFileThread(LPVOID Parama);
//新建一个线程用来接受文件
AfxBeginThread(recFileThread,this,THREAD_PRIORITY_NORMAL);
}系统报错;
ompiling...
ADlg.cpp
E:\vc++\我的文件\A\ADlg.cpp(706) : error C2597: illegal reference to data member 'CADlg::m_ipname' in a static member function
Error executing cl.exe.好象是说在静态函数里非法引用类的成员,怎么解决呢??
解决方案 »
- 求教各位前辈,看看我的学习计划是否可行,求求大家了。
- MFC中创建按钮
- 能不能在windows可输入容器内的右键菜单里添加菜单项??
- 纪念孙中山先生诞辰144周年。
- vc错误cannot open file "libm.lib"
- 愤怒了!困扰多日问题:用SetWindowPos()函数设置窗口置顶,有时有用,有时无用!
- 如何制作类似与VC界面的Class,Resource,FileView之间切换的程序
- 如何查看局域网中一台计算机资源?
- 请问UTF-8转ASCII用下面代码是否可以,谢谢
- CWebBrowser2遍历网页元素Button
- 局域网中,别的机器一开机,就能获知?
- 求助ACE编译问题
static UINT CADlg::recFileThread(LPVOID Parama)
{
....
}另外,函数的定义后还多了一个“;”
{
// Construction
public:
static UINT recFileThread(LPVOID Parama);
CString pathname;
CFile * file;
CString m_ipname;
}UINT CQQDlg::recFileThread(LPVOID Parama)
{ // TODO: Add your control notification handler code here
//创建套间字
CFPScoket * FPScoket=new CFPScoket;
if(!FPScoket->Create ())
{
AfxMessageBox("FPScoket创建失败!");
return 0;
}
else
{
if(!FPScoket->Connect (CQQDlg.m_ipname,8989))
{
AfxMessageBox("连接文件传输套间字失败!");
delete FPScoket;
FPScoket=NULL;
return 0;
}
else
{
.....
}
}
}
void CQQDlg::OnButtonrevFiles()
{
//申明函数
static UINT CQQDlg::recFileThread(LPVOID Parama);
//新建一个线程用来接受文件
AfxBeginThread(recFileThread,this,THREAD_PRIORITY_NORMAL);
}
就是if(!FPScoket->Connect (CQQDlg.m_ipname,8989))这里出错啊!!高手指教啊
{
// Construction
public:
static UINT recFileThread(LPVOID Parama);
CString pathname;
CFile * file;
CString m_ipname;
}UINT CQQDlg::recFileThread(LPVOID Parama)
{
CQQDlg *pDlg = (CQQDlg*)Parama;
// TODO: Add your control notification handler code here
//创建套间字
CFPScoket * FPScoket=new CFPScoket;
if(!FPScoket->Create ())
{
AfxMessageBox("FPScoket创建失败!");
return 0;
}
else
{
if(!FPScoket->Connect(pDlg->m_ipname,8989))
{
AfxMessageBox("连接文件传输套间字失败!");
delete FPScoket;
FPScoket=NULL;
return 0;
}
else
{
.....
}
}
}
void CQQDlg::OnButtonrevFiles()
{
//申明函数
//static UINT CQQDlg::recFileThread(LPVOID Parama);
//新建一个线程用来接受文件
AfxBeginThread(recFileThread,(LPVOID)this);
}