SDC C-Project CF Review 프로그램
LYW
2021-07-23 55615eba335d4cbc1f83330dc5078fe073034b7d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#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;
    };
};