Видимость окна


Окно может быть видимым или скрытым. Система отображает на экране видимое окно (visible window). Она скрывает скрытое окно (hidden window), не рисуя его. Если окно видимое, пользователь может обеспечивать окно вводимой информацией и просматривать выводимую информацию в окне. Если окно скрытое, оно в действительности заблокировано. Скрытое окно может обрабатывать сообщения от системы или от других окон, но оно не может обрабатывать вводимую информацию от пользователя или отображать на экране выводимую информацию. Прикладная программа устанавливает состояние видимости окна при создании окна. Позже, прикладная программа может изменять состояние видимости.

Окно видимо тогда, когда для окна установлен стиль WS_VISIBLE. По умолчанию, функция CreateWindowEx создает скрытое окно, если прикладная программа не определяет стиль WS_VISIBLE. Как правило, прикладная программа устанавливает стиль WS_VISIBLE после того, как она создала окно, чтобы хранить скрытыми от пользователя подробности процесса создания его. Например, прикладная программа может сохранять скрытым новое окно, пока она настраивает вид этого окна. Если стиль WS_VISIBLE определен в CreateWindowEx, система, после создания окна, отправляет окну сообщение WM_SHOWWINDOW, но перед тем как показать его на экране.

Прикладная программа может определить, является ли окно видимым, используя функцию IsWindowVisible. Прикладная программа может показывать (делать видимым) или скрывать окно, используя функции ShowWindow, SetWindowPos, DeferWindowPos или SetWindowPlacement или SetWindowLong. Эти функции показывают или скрывают окно, устанавливая или удаляя WS_VISIBLE стиль для окна. Они также отправляют сообщение WM_SHOWWINDOW окну перед показом или сокрытием его.

Когда окно владелец свернуто, система автоматически скрывает связанные с ним находящиеся во владении окна. Точно так же, когда окно владелец восстанавливается, система автоматически показывает связанные с владельцем окна. В обоих случаях, система отправляет сообщение WM_SHOWWINDOW находящимся в собственности окнам перед сокрытием или показом их. Иногда, прикладной программе возможно надо скрыть находящиеся в собственности окна без необходимости свертывать или скрывать владельца. В этом случае, прикладная программа использует функцию ShowOwnedPopups. Эта функция устанавливает или удаляет стиль WS_VISIBLE для всех находящихся в собственности окон и посылает сообщение WM_SHOWWINDOW находящимся в собственности окнам перед сокрытием или показом их. Скрытие окна владельца не оказывает никакого влияния на состоянии видимости находящихся в собственности окон.

Когда родительское окно видимое, связанные с ним дочерние окна также видимы. Точно так же, когда родительское окно скрыто, его дочерние окна также скрыты. Свертывание родительского окна не оказывает никакого влияния на состояние видимости дочерних окон; то есть дочерние окна свертываются вместе с родителем, но стиль WS_VISIBLE не изменяется.

Даже если окно имеет стиль WS_VISIBLE, пользователь может быть не способен видеть окно на экране; другие окна могут полностью накладываться на него, или оно, возможно, было перемещено за края экрана. А также, видимое дочернее окно подчиненно правилам отсечения, установленными для него родительскими и дочерними взаимоотношениями. Если родительское окно дочернего окна не видимо, оно будет также невидимо. Если родительское окно перемещается за краями экрана, дочернее окно также перемещается, потому что дочернее окно выводится относительно верхнего левого угла родителя. Например, пользователь может перемещать родительское окно, содержащее дочернее окно достаточно далеко за края экрана, так что пользователь может быть не способен видеть дочернее окно, даже притом, что дочернее окно и его родительское окно оба имеют WS_VISIBLE стиль.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz