int  CMainFrame::OnTimer(UINT  nIDEvent)    
{  
           CFrameWnd::OnTimer(nIDEvent);  
             
                 int  i;  
           i=((CVaasView*)GetActiveView())->CheckRing(1);  
       if  (i>0){AfxBeginThread(DoDealThread,NULL,THREAD_PRIORITY_NORMAL  );  }  
           return  0  ;  
}  
 
UINT  CMainFrame::DoDealThread(LPVOID  pParam)  
{  
                 
               ((CVaasView*)GetActiveView())->PlayVoice(1);                            
                 return  0;  
           }  
为什么会出现以下错误???如何解决??  
D:\火炮\vaas\MainFrm.cpp(106)  :  error  C2665:  'AfxBeginThread'  :  none  of  the  2  overloads  can  convert  parameter  1  from  type  'unsigned  int  (void  *)'  

解决方案 »

  1.   

    需要强制转化,你看看MSDN得帮助就知道了
      

  2.   

    UINT  DoDealThread(LPVOID  pParam);
    这样就可以了, 线程调用的函数要么是全局的, 要么是静态的成员函数
      

  3.   

    AfxBeginThread(DoDealThread,NULL,THREAD_PRIORITY_NORMAL  );//DoDealThread是个函数,后面应该有括弧和参数吧?
    你的程序中AfxBeginThread的参数好象不够。
      

  4.   

    你的线程函数不能定义为CMainFrame的成员函数,你可以将函数定义为全局函数,然后把你线程内用到的数据,变量组成一个结构体作为线程函数的参数传递过去。
    如:
    if  (i>0){
        AfxBeginThread(DoDealThread,
            ((CVaasView*)GetActiveView()),THREAD_PRIORITY_NORMAL  );  
    }  
    UINT  DoDealThread(LPVOID  pParam)  
    {
         CVaasView *pView = (=(CVaasView*)pParam;
         pView->PlayVoice(1);                            
         return  0;  
    }
      

  5.   


    UINT  CMainFrame::DoDealThread(LPVOID  pParam) 
    改成
    UINT  DoDealThread(LPVOID  pParam)在cpp开头定义:
    UINT  DoDealThread(LPVOID  pParam);
      

  6.   

    在cpp开头定义:
    UINT  DoDealThread(LPVOID  pParam);
      

  7.   

    HKer_007(伙计,拿杆烟来吃)说得对