Составители:
(LPTHREAD_START_ROUTINE) StartThread,
(LPVOID) ( & ( dwThreadData[iCount] ) ),
CREATE_SUSPENDED, (LPDWORD) ( & (
dwThreadID(iCount] ) ) );
if( ! hThread[iCount] ) // Был ли поток создан?
{
return( FALSE ) ;
}
}
// создание таймера с пятисекундным периодом срабатывания;
// использование таймера для обновления списка
uRet = SetTimer( hWnd, TIMER, 5000, NULL );
if( ! uRet )
{ // создать таймер не удалось
return( FALSE ) ;
}
// создание исключающего семафора
hDrawMutex = CreateMutex( NULL, FALSE, NULL );
if( ! hDrawMutex )
{ //не удалось создать исключающий семафор
KillTimer( hWnd, TIMER ); // остановка таймера
return( FALSE ) ;
}
// запуск потоков с приоритетом ниже стандартного
for( iCount = 0; iCount < 4; iCount++ )
{
SetThreadPriority( hThread[iCount],
THREAD_PRIORITY_BELOW_NORMAL );
iState[iCount] = ACTIVE;
ResumeThread( hThread[iCount] );
}
// Теперь запущены все
четыре потока! return( TRUE ) ;
}
Функция Main_OnSize не только изменяет размер окна приложения, но и
корректирует размеры и положение всех дочерних окон.
/* MAIN_ONSIZE - Позиционирует окно списка и четыре дочерних окна. */
void Main_OnSize( HWND hWnd, UINT uState, int cxClient, int cyClient )
{
char* szText =-"No Thread Data";
int iCount;
// Приостанавливает активные потоки, пока не будет завершено
// изменение размеров и обновление соответствующих окон.
9
(LPTHREAD_START_ROUTINE) StartThread, (LPVOID) ( & ( dwThreadData[iCount] ) ), CREATE_SUSPENDED, (LPDWORD) ( & ( dwThreadID(iCount] ) ) ); if( ! hThread[iCount] ) // Был ли поток создан? { return( FALSE ) ; } } // создание таймера с пятисекундным периодом срабатывания; // использование таймера для обновления списка uRet = SetTimer( hWnd, TIMER, 5000, NULL ); if( ! uRet ) { // создать таймер не удалось return( FALSE ) ; } // создание исключающего семафора hDrawMutex = CreateMutex( NULL, FALSE, NULL ); if( ! hDrawMutex ) { //не удалось создать исключающий семафор KillTimer( hWnd, TIMER ); // остановка таймера return( FALSE ) ; } // запуск потоков с приоритетом ниже стандартного for( iCount = 0; iCount < 4; iCount++ ) { SetThreadPriority( hThread[iCount], THREAD_PRIORITY_BELOW_NORMAL ); iState[iCount] = ACTIVE; ResumeThread( hThread[iCount] ); } // Теперь запущены все четыре потока! return( TRUE ) ; } Функция Main_OnSize не только изменяет размер окна приложения, но и корректирует размеры и положение всех дочерних окон. /* MAIN_ONSIZE - Позиционирует окно списка и четыре дочерних окна. */ void Main_OnSize( HWND hWnd, UINT uState, int cxClient, int cyClient ) { char* szText =-"No Thread Data"; int iCount; // Приостанавливает активные потоки, пока не будет завершено // изменение размеров и обновление соответствующих окон. 9
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »