线程中对状态条操作报异常?该怎么访问?
void CTeststatusbarView::OnMenuitem32771()
{
CQueryInitTreeThread *Pp=new CQueryInitTreeThread(this);
Pp->CreateThread();//开启线程
}
//线程
CQueryInitTreeThread::CQueryInitTreeThread(CWnd * _Father)
{
Father=(CTeststatusbarView*)_Father;
this->m_bAutoDelete=TRUE;
}
BOOL CQueryInitTreeThread::InitInstance(void)
{
return true;
}int CQueryInitTreeThread:: ExitInstance(void)
{
return CWinThread::ExitInstance();
}int CQueryInitTreeThread:: Run( )
{
Query();
return 1;
}void CQueryInitTreeThread::Query()
{
try
{
Father->DoWithData();
}
catch(...)
{
AfxMessageBox("error");
}
return;
}void CTeststatusbarView::DoWithData()
{
CWnd* pMainWnd = AfxGetApp()->m_pMainWnd;
if (pMainWnd != NULL && pMainWnd->m_hWnd != NULL &&
pMainWnd->IsWindowVisible())
{
((CMainFrame *)(pMainWnd))->m_wndStatusBar.SetPaneText(1,"adf");//报异常
}
}
void CTeststatusbarView::OnMenuitem32771()
{
CQueryInitTreeThread *Pp=new CQueryInitTreeThread(this);
Pp->CreateThread();//开启线程
}
//线程
CQueryInitTreeThread::CQueryInitTreeThread(CWnd * _Father)
{
Father=(CTeststatusbarView*)_Father;
this->m_bAutoDelete=TRUE;
}
BOOL CQueryInitTreeThread::InitInstance(void)
{
return true;
}int CQueryInitTreeThread:: ExitInstance(void)
{
return CWinThread::ExitInstance();
}int CQueryInitTreeThread:: Run( )
{
Query();
return 1;
}void CQueryInitTreeThread::Query()
{
try
{
Father->DoWithData();
}
catch(...)
{
AfxMessageBox("error");
}
return;
}void CTeststatusbarView::DoWithData()
{
CWnd* pMainWnd = AfxGetApp()->m_pMainWnd;
if (pMainWnd != NULL && pMainWnd->m_hWnd != NULL &&
pMainWnd->IsWindowVisible())
{
((CMainFrame *)(pMainWnd))->m_wndStatusBar.SetPaneText(1,"adf");//报异常
}
}
这里有问必答
http://systemer.51.net/cgi-bin/leoboard.cgi
希望你能在这里找到你满意的答案