| 12
 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