c++ 线程消息

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;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值