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


Изменение размеров и расположения окна - часть 2


Он определяет, какие операции выполняет функция WinSetWindowPos . Ниже мы привели возможные значения флагов с кратким описанием.

Флаг Описание
SWP _SIZE Изменение размеров окна
SWP _MOVE Изменение расположения окна по осям X и Y
SWP _ZORDER Изменение расположения окна по оси Z
SWP _SHOW Отображение окна
SWP _HIDE Скрытие окна
SWP _NOREDRAW Если указан этот флаг, не выполняется перерисовка изменившихся областей окна
SWP _NOADJUST Если указан этот флаг, перед перемещением окна или перед изменением его размеров в функцию окна не передается сообщение WM_ADJUSTWINDOWPOS
SWP _ACTIVATE Активизация окна (действует только для окна Frame Window ). Если не указан флаг SWP _ZORDER и параметр hwndInsertBehind не равен HWND_BOTTOM , активизированное окно "всплывает" наверх по оси Z
SWP _DEACTIVATE Блокирование окна (действует только для окна Frame Window ). Если не указан флаг SWP _ZORDER и параметр hwndInsertBehind не равен HWND_TOP , активизированное окно отодвигается на задний план по оси Z
SWP _MINIMIZE Минимизация окна. Этот флаг несовместим с флагами SWP _MAXIMIZE и SWP_RESTORE
SWP _MAXIMIZE Максимизация окна. Этот флаг несовместим с флагами SWP _MINIMIZE и SWP_RESTORE
SWP _RESTORE Восстановление размеров окна. Этот флаг несовместим с флагами SWP _MINIMIZE и SWP_MAXIMIZE

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

Заметим, что если не указан флаг SWP _NOADJUST, в функцию окна перед выполнением перемещения или изменения размеров передается сообщение WM_ADJUSTWINDOWPOS . Первый параметр этого сообщения содержит указатель на структуру типа SWP, показанную ниже:

typedef struct _SWP { ULONG fl; LONG cy; LONG cx; LONG y; LONG x; HWND hwndInsertBehind; HWND hwnd; ULONG ulReserved1; // зарезервировано ULONG ulReserved2; // зарезервировано } SWP ; typedef SWP *PSWP;

Обработчик сообщения может изменить поля x, y, cx, cy или hwndInsertBehind, внеся коррективы в изменения размеров или расположения окна.




Начало  Назад  Вперед