Операционные системы. Марапулец Ю.В. - 8 стр.

UptoLike

Составители: 

{
HANDLE_MSG( hWnd, WM_CREATE, Main_OnCreate );
// Создание окна и потоков
HANDLE_MSG( hWnd, WM_SIZE, Main_OnSize );
// Согласование положения дочерних окон при изменении размеров
// главного окна
HANDLE_MSG( hWnd, WM_TIMER, Main_OnTimer ) ;
// Обновление списка через каждые пять секунд
HANDLE_MSG( hWnd, WM_INITMENU, Main_OnInitMenu ) ;
// Если переменная bUseMutex равна TRUE, пометить пункт меню
// Use Mutex.
HANDLE_MSG( hWnd, WM_COMMAND, Main_OnCommand );
// Обработка команд меню
HANDLE_MSG( hWnd, WM_DESTROY, Main_OnDestroy );
// Очистка экрана и выход из программы
default:
return( DefWindowProc(hWnd, uMessage, wParam, lParam) );
}
return( 0L ) ;
}
В программе Threads используется макрокоманда обработки сообщений
HANDLE_MSG,
поэтому компилятор может выдать ряд предупреждений типа
"Unreferenced formal parameter" (Неопознанный формальный параметр). Во
избежание этого в программу следует включить директиву argsused:
#ifdef _BORLANDC_
#pragma argsused
#endif
Функция Main_OnCreate завершает процесс инициализации потоков и
создает исключающий семафор:
/* MAIN_ONCREATE - создать четыре потока и установить таймер */
BOOL Main_OnCreate( HWND hWnd, LPCREATESTRUCT lpCreateStruct )
{
UINT uRet;
int iCount;
// создание четырех потоков, приостановленных в исходном состоянии
for( iCount = 0; iCount < 4; iCount++ )
{
iRectCount[iCount] = 0;
dwThreadData[iCount] = iCount;
hThread[iCount] = CreateThread( NULL, 0,
8
     {
           HANDLE_MSG( hWnd, WM_CREATE, Main_OnCreate );
                  // Создание окна и потоков
           HANDLE_MSG( hWnd, WM_SIZE, Main_OnSize );
           // Согласование положения дочерних окон при изменении размеров
           // главного окна
           HANDLE_MSG( hWnd, WM_TIMER, Main_OnTimer ) ;
           // Обновление списка через каждые пять секунд
           HANDLE_MSG( hWnd, WM_INITMENU, Main_OnInitMenu ) ;
           // Если переменная bUseMutex равна TRUE, пометить пункт меню
           // Use Mutex.
           HANDLE_MSG( hWnd, WM_COMMAND, Main_OnCommand );
           // Обработка команд меню
           HANDLE_MSG( hWnd, WM_DESTROY, Main_OnDestroy );
           // Очистка экрана и выход из программы
           default:
                  return( DefWindowProc(hWnd, uMessage, wParam, lParam) );
     }
     return( 0L ) ;
}

     В программе Threads используется макрокоманда обработки сообщений
HANDLE_MSG, поэтому компилятор может выдать ряд предупреждений типа
"Unreferenced formal parameter" (Неопознанный формальный параметр). Во
избежание этого в программу следует включить директиву argsused:

#ifdef _BORLANDC_
#pragma argsused
#endif

      Функция Main_OnCreate завершает процесс инициализации потоков и
создает исключающий семафор:

/* MAIN_ONCREATE - создать четыре потока и установить таймер */
BOOL Main_OnCreate( HWND hWnd, LPCREATESTRUCT lpCreateStruct )
{
     UINT uRet;
     int iCount;
     // создание четырех потоков, приостановленных в исходном состоянии
     for( iCount = 0; iCount < 4; iCount++ )
     {
            iRectCount[iCount] = 0;
            dwThreadData[iCount] = iCount;
            hThread[iCount] = CreateThread( NULL, 0,

                                    8