Учебное пособие: Окна приложений в среде Windows

ShowWindow( hWnd, SHOW_FULLSCREEN );

ShowWindow( hWnd, SW_SHOWMAXIMIZED );

ShowWindow( hWnd, SW_MAXIMIZE );

максимизированое окно всегда активно и имеет фокус ввода. Когда какое-либо окно максимизируется, все остальные верхние окна получают сообщение WM_SIZE, информирующее о том, что они “закрыты” максимизированным окном.

Мы можем узнать, является ли наше окно максимизированным с помощью функции

BOOL IsZoomed( hWnd );

При использовании системного меню операции максимизации окна соответствует пункт Maximize , выбор которого порождает системную команду SC_MAXIMIZE (или синоним SC_ZOOM ). (см. сообщение WM_SYSCOMMAND )

Здесь вместо термина maximize может использоваться zoom .

· минимизированным , то есть представленным в виде иконки. Для того, что превратить окно в иконку мы должны воспользоваться одним из способов:

ShowWindow( hWnd, SHOW_ICONWINDOW );

ShowWindow( hWnd, SW_SHOWMINIMIZED );

ShowWindow( hWnd, SW_SHOWMINNOACTIVE );

ShowWindow( hWnd, SW_MINIMIZE );

CloseWindow( hWnd );

Разные способы, использующие ShowWindow, отличаются только правилами активации окна. SW_SHOWMINIMIZED и SHOW_ICONWINDOW отображает окно в виде иконки, делая его активным; SW_SHOWMINNOACTIVE не изменяет текущего активного окна; SW_MINIMIZE (как и функция CloseWindow()) делает активным следующее окно в списке Windows. Последний способ эффективен при минимизации главного окна приложения - так как минимизированное главное окно обычно обозначает передачу активности другому приложению.

Проверить состояние окна можно с помощью функции

BOOL IsIconic( hWnd );

При использовании системного меню превращению окна в иконку соответствует пункт ‘Minimiz e’, порождающий системную команду SC_MINIMIZE (или синоним SC_ICON ). (см. сообщение WM_SYSCOMMAND )

В этом случае используется сразу три разных термина для обозначения одного и того-же: minimize , close и iconic . При этом функция CloseWindow() является единственной, интерпретирующей термин close таким способом; в остальных случаях close означает действительно закрытие (иногда уничтожение) окна. Здесь же надо, чтто термин open, применяемый к минимизированному окну обозначает его максимизацию или восстановление нормальных размеров.

· нормальным , то есть мы видим (или можем увидеть) его рамку, мы можем перемещать окно по экрану. Когда окно находится в нормальном состоянии, то для него определены максимально и минимально допустимый размеры. Эти размеры нельзя путать с максимизированным и минимизированным состояниями. Максимальный размер нормального окна может даже превышать размер окна в максимизированном состоянии, минимальный размер это обычно такой размер, при котором окно еще может быть корректно представлено в виде окна.

Для перехода из минимизированого состояния к нормальному можно воспользоваться функцией OpenIcon( hWnd ); или, как из минимизированого, так и из максимизированого состояния можно пользоваться функцией ShowWindow() с параметрами:

ShowWindow( hWnd, SHOW_OPENWINDOW );

ShowWindow( hWnd, SW_SHOWNORMAL );

ShowWindow( hWnd, SW_RESTORE );

ShowWindow( hWnd, SW_SHOWNOACTIVATE );

В документации (SDK Help) указано, что SW_RESTORE и SW_SHOWNORMAL эквивалентны, но это далеко не так - SW_RESTORE восстанавливает предыдущее состояние, а не нормальное. То есть, если Вы минимизировали окно из максимизированного, то SW_RESTORE вернет Вас к максимизированному окну, а SW_SHOWNORMAL - к нормальному. SW_SHOWNORMAL имеет синоним SHOW_OPENWINDOW.

Если окно восстанавливается или максимизируется из минимизированного состояния, то Ваше окно получит сообщение WM_QUERYOPEN - обрабатывая которое Вы можете разрешить или запретить дальнейшие действия. Если Вы возвращаете TRUE, то окно будет раскрыто, а если Вы вернете FALSE, то окно останется минимизированным.

Замечание 7 . Дополнительно надо разобраться с несколькими терминами Windows, которые постоянно применяются, но никак в документации не описаны. Речь идет о хендлах копии приложения (HINSTANCE), модуля (HMODULE) и задачи (HTASK). Все эти хендлы используются разными функциями, причем разница между ними никак не поясняется. Поэтому нам надо рассмотреть эти хендлы более подробно:

· HTASK описывает задачу.

К-во Просмотров: 328
Бесплатно скачать Учебное пособие: Окна приложений в среде Windows