int CMainDataProcEngine2::StartProc(void)
{
if (NULL!=m_hProcThread)
{
return TRUE;
}
m_hProcThread = (HANDLE)_beginthreadex(NULL, 0, CMainDataProcEngine2::ProcFunc , this, CREATE_SUSPENDED, &m_uiProcThread);
if (NULL==m_hProcThread)
{
return FALSE;
}
::PostThreadMessage(m_uiProcThread, WM_NULL, 0, 0);
::ResumeThread(m_hProcThread);
return 0;
}
unsigned __stdcall CMainDataProcEngine2::ProcFunc(void* pArgument)
{
CMainDataProcEngine2* pThis = (CMainDataProcEngine2*)pArgument;
if (NULL==pThis)
{
_endthreadex(1);
return 1;
}
MSG message;
while (1)
{
if (::PeekMessage(&message, NULL, 0, 0, PM_NOREMOVE))
{
if (::GetMessage(&message, NULL, 0, 0))
{
pThis->OnProcThreadMessage(message.message, message.wParam, message.lParam);
}
else
{
_endthreadex(0);
return 0;
}
}
else
{
if (!pThis->DoProcessing())
{
::Sleep(50);
}
}
}
}
void CMainDataProcEngine2::OnProcThreadMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg==TM_SETIMAGEMODE)
{
int im = (int)wParam;
TMOnSetImageMode(im);
}
else if (uMsg==TM_UPDATEIMAGE)
{
TMOnUpdateImage();
}
else if (uMsg==TM_TRANSIMAGE)
{
int im = (int)wParam;
TMOnTransImage(im);
}
else if (uMsg==TM_REVIEW)
{
int nReviewMode = (int)wParam;
BOOL bKeepReviewing = (BOOL)lParam;
TMOnReview(nReviewMode, bKeepReviewing);
}
else if (uMsg==TM_MARKTIP)
{
int nState = (int)wParam;
ClearTIP(nState);
}
}
bool CMainDataProcEngine2::DoProcessing()
{
if (m_nProcMode==DP_SCANNING)
{
if (CEquipRuntimeInfo::GetInstance()->m_bStopAsDiskLack )
return false;
return DoScanningProc();
}
else if (m_nProcMode==DP_REVIEWING)
{
return DoReviewingProc();
}
else
return false;
}