首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

beginthreadex函数的有关问题

2012-03-01 
beginthreadex函数的问题tdlg.cppWORDwUINTiw_beginthreadex(NULL,0,MyProc2,this,0,&i)UINTWINAPICTD

beginthreadex函数的问题
tdlg.cpp    
 
 
WORD     w;    
 
                      UINT     i;    
 
                      w=_beginthreadex(NULL,0,MyProc2,this,0,&i);    
 
 
 
UINT     WINAPI     CTDlg::MyProc2(LPVOID     l)    
{    
                      AfxMessageBox开启线程2 ");    
                      return     1;    
}    
编译时提示cannot     convert     parameter     3     from     'unsigned     int     (void     *) '     to     'unsigned     int     (__stdcall     *)(void     *) '    
 
如果MyProc2做为全局函数则可以通过

[解决办法]
类的成员函数不能作线程函数,只有全局函数或是静态成员变量可以,因为成员函数如你上面那个UINT WINAPI CTDlg::MyProc2(LPVOID l),看起来它只有一个参数,但是实际上它还有一个指针参数this ,用来指明这个函数是属于具体哪一个对象的函数,所以有两个参数,所以不行,上面的出错信息也说出了这个问题。
[解决办法]
UINT WINAPI static CTDlg::MyProc2(LPVOID l)
这样也能过。 线程函数不能为非静态的类的成员函数。

热点排行