#pragma once
|
|
#include "CHThreadPools/WorkThreadPools.h"
|
|
namespace CHSignalControls_Network
|
{
|
class CMessageProcessData : public CWorkThreadData
|
{
|
public:
|
CMessageProcessData(PVOID pPtr) : CWorkThreadData(pPtr)
|
{
|
m_unMsg = 0;
|
m_wParam = NULL;
|
m_lParam = NULL;
|
}
|
virtual ~CMessageProcessData()
|
{
|
m_unMsg = 0;
|
m_wParam = NULL;
|
m_lParam = NULL;
|
}
|
|
UINT m_unMsg;
|
WPARAM m_wParam;
|
LPARAM m_lParam;
|
};
|
|
interface IMessageProcessor2Parent
|
{
|
virtual void IMP2P_ProcessMessageData(CMessageProcessData* pData) = 0;
|
};
|
|
class CMessageProcessor : public CWorkThreadPools
|
{
|
public:
|
CMessageProcessor::CMessageProcessor(IMessageProcessor2Parent* pMP2P) : m_pMP2P(pMP2P), CWorkThreadPools(1)
|
{
|
}
|
|
virtual CMessageProcessor::~CMessageProcessor(void)
|
{
|
m_pMP2P = NULL;
|
}
|
|
BOOL AddMessageProcessData(UINT msg, WPARAM wParam, LPARAM lParam)
|
{
|
CMessageProcessData *pData = new CMessageProcessData(this);
|
if (pData==NULL) return FALSE;
|
|
pData->m_unMsg = msg;
|
pData->m_wParam = wParam;
|
pData->m_lParam = lParam;
|
|
return CreateWorkThread(pData);
|
}
|
|
protected:
|
virtual void WorkThreadProcess(PVOID pParameter)
|
{
|
if (m_pMP2P==NULL) return;
|
|
CMessageProcessData *pData = static_cast<CMessageProcessData*>(pParameter);
|
if (pData==NULL) return;
|
|
m_pMP2P->IMP2P_ProcessMessageData(pData);
|
}
|
|
protected:
|
IMessageProcessor2Parent* m_pMP2P;
|
};
|
};
|