Программирование для IBM OS2

         

Обработчик сообщения WM_SIZE


Сообщения WM_SIZE поступает в функцию окна, когда пользователь изменяет его размеры, например, при помощи мыши. Параметры этого сообщения содержат старые и новые размеры окна, однако в нашем приложении они не используются. В ответ на сообщение WM_SIZE прилоежние TEXTOUT вызывает функцию WinInvalidateRect , как это показано ниже:

WinInvalidateRect (hWnd, NULL, TRUE);

Функция WinInvalidateRect объявляет, что область внутри окна hWnd требует перерисовки, для чего в очередь приложения помещается сообщение WM_PAINT . При получении пространства отображения функцией WinBeginPaint в структуру rec будет записаны границы этой области.

Прототип функции WinInvalidateRect приведен ниже:

BOOL WinInvalidateRect ( HWND hwnd, // идентификатор обновляемого окна PRECTL pwrc, // обновляемая область BOOL fIncludeChildren); // дополнительный признак

Через параметр hwnd передается идентификатор окна, область внутри которого необходимо обновить.

Границы обновляемой области задаются параметром pwrc. Если вместо указателя на структуру типа RECTL указано значение NULL, обновляется все окно.

Если значение параметра fIncludeChildren равно TRUE, дополнительно обновляются также все дочерние окна, функциям которых также будет передано сообщение WM_PAINT . Если же значение этого параметра равно FALSE, дочерние окна не будут перерисованы, если родительское окно имеет стиль WS_CLIPCHILDREN .

В случае успеха функция WinInvalidateRect возвращает значение TRUE, при ошибке - FALSE.

В нашем приложении обработчик сообщения WM_SIZE инициирует перерисовку всего окна Client Window , поэтому при любом изменении размеров главного окна приложения функция окна получит сообщение WM_PAINT . Обработчик этого сообщения вначале сотрет текущее содержимое окна, а затем нарисует текстовую строку Hello, PM! в точке с заданными координатами.



Содержание раздела