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
|
CMyClass::CMyClass()
{
m_NbEvent = 0;
m_MyEvent = NULL;
m_bStatus=THR_STOPPED; // Thread arreté
}
CMyClass::~CMyClass()
{
if (m_MyEvent ) {
for (int EvtI = 0 ; EvtI < m_NbEvent ; EvtI++)
CloseHandle(m_MyEvent[EvtI]);
delete m_MyEvent;
}
}
void CMyClass::ToggleBitmap(int nIndex)
{
::SetEvent(m_MyEvent[nIndex]);
}
void CMyClass::SetNbEvent(int iMaxEvent)
{
m_NbEvent = iMaxEvent;
m_MyEvent = new HANDLE[m_NbEvent];
for (int EvtI = 0 ; EvtI < m_NbEvent ; EvtI++)
m_MyEvent[EvtI] = CreateEvent(NULL, FALSE, FALSE, NULL);
}
BOOL CMyClass::InitInstance()
{
m_bStatus= THR_RUNNING;
DWORD Ret;
int nEvent;
// Debut boucle principale
while (m_bStatus==THR_RUNNING) {
Ret = ::WaitForMultipleObjects(m_NbEvent, m_MyEvent , FALSE, INFINITE);
nEvent = Ret - WAIT_OBJECT_0;
::ResetEvent(m_MyEvent[nEvent]);
if (m_MainDlg) {
if (m_MainDlg->m_cLight[nEvent])
m_MainDlg->m_cLight[nEvent]->SetBitmap(m_MainDlg->m_bGreen);
}
};
m_bStatus= THR_STOPPED;
while (m_bStatus!=THR_STOPPED_ACK) Sleep (2000);
return TRUE;
} |
Partager