读书人

问个_beginthreadex()参数相关的有关

发布时间: 2012-03-22 17:43:57 作者: rapoo

问个_beginthreadex()参数相关的问题
DWORD __stdcall MYCLASS::RecvProc(LPVOID lparam)
{
....
}

m_hThread[0] = (HANDLE)_beginthreadex(NULL,0,(unsigned(__stdcall *)(void *))RecvProc,NULL,0,NULL);

我这样调用,可是编译的时候,老是提示 error C2440: 'type cast' : cannot convert from '' to 'unsigned int (__stdcall *)(void *)'

是不是我这三个参数用错了??
PS:_beginthreadex()的调用也是在类方法中的!

[解决办法]
要在类定义中把 RecvProc 声明为 static
[解决办法]
up 1楼, 非类成员函数可以用全局的.
类成员函数得用static

[解决办法]
static DWORD __stdcall CserverDlg::RecvProc(LPVOID lpParam);
或者 DWORD __stdcall RecvProc(LPVOID lpParam);全局,传个this指针进去
[解决办法]
DWORD __stdcall MYCLASS::RecvProc(LPVOID lparam)
{
MYCLASS* pThis = (MYCLASS*)lparam;
pThis->DoRecvProc();
}


MYCLASS obj;
//...

m_hThread[0] = (HANDLE)_beginthreadex(NULL,0,(unsigned(__stdcall *)(void *))RecvProc,&obj,0,NULL);

读书人网 >C++

热点推荐