На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Child Window



A child window has the WS_CHILD style and is confined to the client area of its parent window. An application typically uses child windows to divide the client area of a parent window into functional areas. You create a child window by specifying the WS_CHILD style in the CreateWindowEx function.

A child window must have a parent window. The parent window can be an overlapped window, a pop-up window, or even another child window. You specify the parent window when you call CreateWindowEx. If you specify the WS_CHILD style in CreateWindowEx but do not specify a parent window, Windows does not create the window.
A child window has a client area but no other features, unless they are explicitly requested. An application can request a title bar, a window menu, minimize and maximize buttons, a border, and scroll bars for a child window, but a child window cannot have a menu. If the application specifies a menu handle, either when it registers the child's window class or creates the child window, the menu handle is ignored.

Positioning

Windows always positions the child window relative to the upper left corner of the parent window's client area. No part of a child window ever appears outside the borders of its parent window. If an application creates a child window that is larger than the parent window or positions a child window so that some or all of the child window extends beyond the borders of the parent, Windows clips the child window; that is, the portion outside the parent window's client area is not displayed. Actions that affect the parent window can also affect the child window, as follows.

Parent window Child window
Destroyed Destroyed before the parent window is destroyed.
Hidden Hidden before the parent window is hidden. A child window is visible only when the parent window is visible.
Moved Moved with the parent window's client area. The child window is responsible for painting its client area after the move.
Shown Shown after the parent window is shown.


Clipping

Windows does not automatically clip a child window from the parent window's client area. This means the parent window draws over the child window if it carries out any drawing in the same location as the child window. Windows does, however, clip the child window from the parent window's client area if the parent window has the WS_CLIPCHILDREN style. If the child window is clipped, the parent window cannot draw over it.
A child window can overlap other child windows in the same client area. A child window that shares the same parent window as one or more other child windows is called a sibling window. Sibling windows can draw in each other's client area, unless one of the child windows has the WS_CLIPSIBLINGS style. If a child window does have this style, any portion of its sibling window that lies within the child window is clipped.

If a window has either the WS_CLIPCHILDREN or WS_CLIPSIBLINGS style, a slight loss in performance occurs. Each window takes up system resources, so an application should not use child windows indiscriminately. For best performance, an application that needs to logically divide its main window should do so in the window procedure of the main window rather than by using child windows.

Relationship to Parent Window

An application can change the parent window of an existing child window by calling the SetParent function. In this case, Windows removes the child window from the client area of the old parent window and moves it to the client area of the new parent window. If SetParent specifies a NULL handle, the desktop window becomes the new parent window. In this case, the child window is drawn on the desktop, outside the borders of any other window. The GetParent function retrieves the handle of a child window's parent window.

The parent window relinquishes a portion of its client area to a child window, and the child window receives all input from this area. The window class need not be the same for each of the child windows of the parent window. This means that an application can fill a parent window with child windows that look different and carry out different tasks. For example, a dialog box can contain many types of controls, each one a child window that accepts different types of data from the user.

A child window has only one parent window, but a parent can have any number of child windows. Each child window, in turn, can have child windows. In this chain of windows, each child window is called a descendant window of the original parent window. An application uses the IsChild function to discover whether a given window is a child window or a descendant window of a given parent window.
The EnumChildWindows function enumerates the child windows of a parent window. Then, EnumChildWindows passes the handle of each child window to an application-defined callback function. Descendant windows of the given parent window are also enumerated.

Messages

Windows passes a child window's input messages directly to the child window; the messages are not passed through the parent window. The only exception is if the child window has been disabled by the EnableWindow function. In this case, Windows passes any input messages that would have gone to the child window to the parent window instead. This permits the parent window to examine the input messages and enable the child window, if necessary.
A child window can have a unique integer identifier. Child window identifiers are important when working with control windows. An application directs a control's activity by sending it messages. The application uses the control's child window identifier to direct the messages to the control. In addition, a control sends notification messages to its parent window. A notification message includes the control's child window identifier, which the parent uses to identify which control sent the message. An application specifies the child-window identifier for other types of child windows by setting the hmenu parameter of the CreateWindowEx function to a value rather than a menu handle.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Окно Ребенка



Окно ребенка имеет стиль WS_CHILD и ограничено в область клиента своего родительского окна. Приложение обычно использует окно ребенка, чтобы делить область клиента родительского окна в функциональные области. Вы создаете окно ребенка определяя стиль WS_CHILD в функции CreateWindowEx.

Окно ребенка должно иметь родительское окно. Родительское окно может быть перекрытым окном, управляющее окно, или даже другим окном ребенка. Вы определяете родительское окно когда Вы называете CreateWindowEx. Если Вы определяете стиль WS_CHILD в CreateWindowEx но не определяете родительское окно, Окно не создает окно.
Окно ребенка не имеет область клиента но никаких других характеристик, если они явно не попрошены. Приложение может запросить зону названия, меню окна, минимизировать и расширять кнопки, граница и перемещать зоны для окна ребенка, но окно ребенка не может иметь меню. Если приложение определяет ручку меню, или когда оно регистрирует класс окна ребенка или создает окно ребенка, ручка меню проигнорирована.

Позиционирование

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

Окно Ребенка Родительского окна
Уничтоженное Уничтожать прежде, чем родительское окно будет уничтожено.
Спрятанное Прятать прежде, чем родительское окно будет исчезнуто. Окно ребенка видимое только когда родительское окно видимое.
Перемещенное Перемещенное областью клиента родительского окна. Окно ребенка ответственное за живопись области клиента после перемещения.
Показанное Показывать после того, как родительское окно будет показано.


Отсечение

Windows автоматически не вырезает окно ребенка из области клиента родительского окна. Это означает что родительское окно делает над окном ребенка если оно выполняет любую втягивающую ту же позицию как окно ребенка. Windows делает, тем не менее, вырезать окно ребенка из области клиента родительского окна если родительское окно имеет стиль WS_CLIPCHILDREN. Если окно ребенка вырезано, родительское окно не может сделать над этим.
Окно ребенка может перекрыть другое окно ребенка в той же области клиента. Окно ребенка, которое распространяет то же родительское окно как одно или более других окон ребенка названы окно брата. Окно Брата может втянуть каждую область клиента другого, если одно из окна ребенка не имеет стиль WS_CLIPSIBLINGS. Если окно ребенка имеет этот стиль, любую часть своего окна брата, которые лежат (лгать) в пределах окна ребенка вырезаны.

Если окно имеет или WS_CLIPCHILDREN или стиль WS_CLIPSIBLINGS, легкий убыток в исполнении происходит. Каждое окно принимает системные ресурсы, так что приложение не должно использовать окно ребенка беспорядочно. Для наилучшего показателя, приложение, что нужно logically делить свое основное окно должно делать так в процедуре окна основного окна а не используя окно ребенка.

Отношение в Родительское Окно

Приложение может изменить родительское окно существующего окна ребенка вызывая функцию SetParent. В этом случае, Windows удаляет окно ребенка из области клиента старого родительского окна и перемещает это на область клиента нового родительского окна. Если SetParent определяет НЕДЕЙСТВИТЕЛЬНУЮ ручку, настольное окно становится новым родительским окном. В этом случае, окно ребенка сделано в настольной системе, за пределами границ любого другого окна. Функция GetParent извлекает ручку окна ребенка родительского окна.

Родительское окно освобождает часть своей области клиента в окно ребенка, и приемники окна ребенка весь ввод из этой области. Класс окна не должен быть тем же для каждого окна ребенка родительского окна. Это означает, что приложение может заполнить родительское окно окном ребенка, которое выглядит другим и выполняет другие задачи. Например, диалоговый блок может содержать много типов элементов управления, каждое окно ребенка, который принимает другие типы данных из пользователя.

Окно ребенка имеет только одно родительское окно, но родитель может иметь любой номер окна ребенка. Каждое окно ребенка, в свою очередь, может иметь окно ребенка. В этой цепи окна, каждое окно ребенка названо окно потомка оригинального родительского окна. Приложение использует функцию IsChild, чтобы обнаруживать независимо данное окно - окно ребенка или окно потомка данного родительского окна.
Функция EnumChildWindows перечисляет окно ребенка родительского окна. Затем, EnumChildWindows передает ручку каждого окна ребенка в определенную прикладную функцию возврата. Окно Потомка данного родительского окна также перечислено.

Сообщения

Windows передает окно ребенка входных сообщений непосредственно в окно ребенка; сообщения не пройдены через родительское окно. Единственное исключение - если окно ребенка выведено из строя функцией EnableWindow. В этом случае, Windows передает любые входные сообщения, которые должны пойти в окно ребенка в родительское окно взамен. Это разрешает родительское окно, чтобы изучать входные сообщения и приспосабливаться окно ребенка, если необходимо.
Окно ребенка может иметь уникальный идентификатор целого. Идентификаторы окна Ребенка важные при работе с управляющим окном. Приложение направляет управляющую деятельность посылая этому сообщения. Приложение использует идентификатор окна управляющего ребенка, чтобы направлять сообщения на управление. Кроме того, управление посылает уведомлению сообщения в свое родительское окно. Сообщение уведомления включает идентификатор окна управляющего ребенка, который родитель использует, чтобы идентифицировать какое управление пославшее сообщение. Приложение определяет ребенка-окна идентификатора для других типов окна ребенка устанавливая параметр hmenu функции CreateWindowEx в величину а не ручка меню.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz