Отношение с родительским окном
Прикладная программа может изменять родительское окно существующего дочернего окна, вызывая функцию
SetParent. В этом случае, система удаляет дочернее окно из рабочей области старого родительского окна и перемещает его в рабочую область нового родительского окна. Если функция SetParent определяет значение дескриптора ПУСТО (NULL), окно рабочего стола становится новым родительским окном. В этом случае, дочернее окно рисуется в основном окне, вне рамок любого другого окна. Функция GetParent восстанавливает дескриптор родительского окна для дочернего окна.Родительское окно уступает только часть своей рабочей области дочернему окну, но дочернее окно принимает всю вводимую информацию для этой области. Класс окна не должен быть тот же самый для каждого из дочерних окон родительского окна. Это означает, что прикладная программа может заполнять родительское окно дочерними окнами, которые выглядят по-разному, и выполняют различные задачи. Например, диалоговое окно может содержать много типов органов управления, каждое из них дочернее окно, которое принимает различные типы данных от пользователя.
Дочернее окно имеет только одно родительское окно, но родитель может иметь любое число дочерних окон. Каждое дочернее окно, в свою очередь, может иметь дочерние окна. В этой цепочке окон, каждое дочернее окно называется порожденным окном первоначального родительского окна. Прикладная программа использует функцию
IsChild, чтобы выявить, является ли данное окно дочерним окном или порожденным окном данного родительского окна.Функция
EnumChildWindows перечисляет дочерние окна родительского окна. Затем, EnumChildWindows передает дескриптор каждого дочернего окна в определенную прикладной программой функцию повторного вызова. Порожденные окна данного родительского окна также перечисляются.