#pragma once #include "CHThreadPools/WorkThreadPools.h" namespace CHCameraControls_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(pParameter); if (pData==NULL) return; m_pMP2P->IMP2P_ProcessMessageData(pData); } protected: IMessageProcessor2Parent* m_pMP2P; }; };