At run-time, all controls in an application are related to each other in a tree hierarchy, with a window group at the root of the tree. This is similar to the hierarchy of windows that exists in the window server. There are two relationships which may exist between controls in the hierarchy, depending on whether they are window-owning or non-window-owning:
a window-owning control must have a parent, and may also have a container
a non-window-owning control must have a container control.
The parent of window-owning control must itself be a window-owning
control. The parent is specified when the control is created, and its window
becomes the parent of this control's window in the window server. A control's
parent may also be its container, but window-owning controls do not have to
have a container. If a window-owning control has a container, this does not
mean that the control can't be positioned outside its container —
only the parent window restricts that. What it does mean, is that whenever the
container control is drawn by the application with a call to
CCoeControl::DrawNow()
, the window-owning component control will
also be redrawn.
A control's container is by definition a compound control, and can be either window-owning or non-window-owning. The container itself may be a component in another compound control.
A control's container or parent control may not be changed after it has been set.