c++ 线程消息
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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |