int CMainDataProcEngine2::StartProc(voID)
{
if (NulL!=m_hProcThread)
{
return TRUE;
}
m_hProcThread = (HANDLE)_beginthreadex(NulL,CMainDataProcEngine2::ProcFunc,this,CREATE_SUSPENDED,&m_uiProcThread);
if (NulL==m_hProcThread)
{
return FALSE;
}
::PostThreadMessage(m_uiProcThread,WM_NulL,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,PM_norEMOVE))
{
if (::GetMessage(&message,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;
}
总结以上是内存溢出为你收集整理的c++ 线程消息全部内容,希望文章能够帮你解决c++ 线程消息所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)