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.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database