Составители:
(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
- …
- следующая ›
- последняя »
