UINT ThreadA(LPVOID pParam)
{
CBase *p=(CBase*)pParam;
p->Compute();
if(p->m_pTheadA!=NULL)
{
p->m_pTheadA=NULL;
}
::PostMessage(p->GetView()->GetSafeHwnd(),MSG_XXXXX,0,0);
return 0;
}
void CBase::StartThreadA()
{
if(m_pThreadA!=NULL)
{
if(!TerminateThread(m_pThreadA->m_hThread,0UL))
return;
delete m_pThreadA;
m_pThreadA=NULL;
}
m_pThreadA= AfxBeginThread(ThreadA,this,THREAD_PRIORITY_IDLE,0,0,NULL);
}
{
CBase *p=(CBase*)pParam;
p->Compute();
if(p->m_pTheadA!=NULL)
{
p->m_pTheadA=NULL;
}
::PostMessage(p->GetView()->GetSafeHwnd(),MSG_XXXXX,0,0);
return 0;
}
void CBase::StartThreadA()
{
if(m_pThreadA!=NULL)
{
if(!TerminateThread(m_pThreadA->m_hThread,0UL))
return;
delete m_pThreadA;
m_pThreadA=NULL;
}
m_pThreadA= AfxBeginThread(ThreadA,this,THREAD_PRIORITY_IDLE,0,0,NULL);
}
BOOL CXXView::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class if(pMsg->message==MSG_XXXXX&&m_pBase!=NULL)
{
.......
.......
}
return CView::PreTranslateMessage(pMsg);
}
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
//{{AFX_MSG_MAP(CMyDlg)
ON_WM_ENTERIDLE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP() void CMyDlg::OnEnterIdle(UINT nWhy, CWnd* pWho)
{
CDialog::OnEnterIdle(nWhy, pWho);
MSG msg;
if (PeekMessage(&msg, m_hWnd, MSG_XXXXX, MSG_XXXXX,PM_REMOVE))
{
.......
....... } }