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 *)'
{
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 *)'
这样就可以了, 线程调用的函数要么是全局的, 要么是静态的成员函数
你的程序中AfxBeginThread的参数好象不够。
如:
if (i>0){
AfxBeginThread(DoDealThread,
((CVaasView*)GetActiveView()),THREAD_PRIORITY_NORMAL );
}
UINT DoDealThread(LPVOID pParam)
{
CVaasView *pView = (=(CVaasView*)pParam;
pView->PlayVoice(1);
return 0;
}
UINT CMainFrame::DoDealThread(LPVOID pParam)
改成
UINT DoDealThread(LPVOID pParam)在cpp开头定义:
UINT DoDealThread(LPVOID pParam);
UINT DoDealThread(LPVOID pParam);