UINT CTaskingDoc::ThreadFunc(LPVOID pParam)
{
CSpinner* lpSpin=(CSpinner*)pParam;
BOOL*pbContinue=lpSpin->GetContinue();
while(*pbContinue)
lpSpin->Draw();
return 0;}void CTaskingDoc::SuspendSpinner(int nIndex, BOOL bSuspend)
{
if(!bSuspend)
{
if(m_pSpinThread[nIndex])
{
HANDLE hThread = m_pSpinThread[nIndex]->m_hThread;
::WaitForSingleObject(hThread,INFINITE);
}
}
else
{
int iSpnr;
switch(nIndex)
{
case 0:
iSpnr=1;
break;
case 1:
iSpnr=3;
break;
}
m_pSpinThread[nIndex]=AfxBeginThread(ThreadFunc,(LPVOID)&m_cSpin[iSpnr]);
}}
运行报错为error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
Error executing cl.exe.
不知为何会出错望高手解答

解决方案 »

  1.   

    线程函数必须是static函数或是全局函数,所以你改一下你的ThreadFunc就可以了
      

  2.   

    定义成:
    void static CTaskingDoc::SuspendSpinner(int nIndex, BOOL bSuspend)
    或 SuspendSpinner(int nIndex, BOOL bSuspend)
    就可以啦!
      

  3.   

    改成void  static  CTaskingDoc::SuspendSpinner(int  nIndex,  BOOL  bSuspend)以后报错为error C2724: 'SuspendSpinner' : 'static' should not be used on member functions defined at file scope
      

  4.   

    是在定义的时候加static啊,不是在实现文件中加.
    或者你干脆写成全局函数就可以啦
      

  5.   

    修改线程函数:static UINT CTaskingDoc::ThreadFunc(LPVOID pParam)
      

  6.   

    把原有的ThreadFunc(LPVOID pParam)删掉,包括声明然后手工加入独立于CTaskingDoc类的全局函数ThreadFunc(LPVOID pParam)
      

  7.   

    derryzhang(雨田)强人,问题解决。太感谢了