Дочірнього вікна

Дочірнього вікна WS_CHILD стиль і зводиться до клієнтської області вікна, що його батько. Застосування зазвичай використовує дитина windows розділення клієнтської області вікна батьків на функціональних областей. Створення дочірнього вікна можна вказати стиль WS_CHILD в функції CreateWindowEx.

Дочірнього вікна повинні мати батьків вікно. Батько вікна може бути перекриваються вікно, спливаюче вікно або навіть до іншого дочірнього вікна. Ви вказуєте вікна батьків, коли ви телефонуєте CreateWindowEx. Якщо вказати стиль WS_CHILD в CreateWindowEx , але не вказано батьківський вікно, система не створює вікна.

Дочірнього вікна має клієнтської області, але інші функції, якщо вони явно просив. Застосунок може запит на вікно меню рядка заголовка, звести до мінімуму і максимально кнопки, межі та смуги прокручування для дочірнього вікна, але дочірнього вікна не можуть мати меню. Якщо програма визначає дескриптор меню, або коли вона реєструє клас вікна дитини або створює дочірнього вікна, ігнорується дескриптор меню.

Позиціонування

Система завжди позиції дочірнього вікна по відношенню до верхньому лівому куті області вікна її батько клієнта. Жодна частина дочірнього вікна завжди з'являється поза межі вікна, що його батько. Якщо застосунок створює дочірнього вікна, що більше, ніж вікно батьків або позиції дочірнього вікна так, що всі або деякі з дочірнього вікна поширюється за межі батьків, система кліпи дочірнього вікна; тобто, частини за межами вікна батьківського клієнтської області не відображається. Дії, які впливають на батьківський вікно також впливає на дочірнього вікна в наступному.

Батько вікно Дочірнього вікна
Знищено Знищено, перш ніж знищили батьківського вікна.
Приховано Приховані перед приховані вікна батьків. Дочірнього вікна відображається лише тоді, коли вікно батьків є видимими.
Переїхав Перейшов з області вікна батьківського клієнта. Дочірнього вікна несе відповідальність за живопис своєї клієнтської області після переміщення.
Показано Показано після показано вікно батьків.

Обрізання

Система автоматично не кліпів дочірнього вікна від батьківського вікно клієнтської області. Це означає, що вікно батьківського звертає поверх вікна дитини, якщо він проводить будь-який малюнок в тому ж місці, дочірнього вікна. Однак, система кліпів дочірнього вікна від батьківського вікно клієнтської області, якщо вікно Батьківський стиль WS_CLIPCHILDREN. Якщо вирізанні дочірнього вікна вікна батьківського неможливо намалювати над нею.

Дочірнього вікна можуть перекриватися інші дочірні вікна в тому ж районі клієнта. Дочірнього вікна, що поділяє ж батьківського вікно, як один або більше інших дитини windows називається братом вікно. Брат windows можна намалювати один одного клієнтської області, якщо одна дитина Windows має WS_CLIPSIBLINGS стилю. Якщо дочірнього вікна цей стиль, будь-яку частину його брат вікно, що знаходиться в межах вікна дитини обрізаний.

Якщо вікно або WS_CLIPCHILDREN, або WS_CLIPSIBLINGS стилю, виникає, незначною втратою продуктивності. Кожне вікно займає системних ресурсів, тому застосунок не повинні використовувати дочірні вікна без розбору. Для кращої продуктивності застосунок, що потребує логічно розділити його головного вікна повинні робити це в вікно процедура головного вікна, а не за допомогою windows дитини.

Ставлення до батьківського вікно

Заявку можна змінити існуючі вікна дитини вікні батьківського виклику функції SetParent . У цьому випадку, система видаляє дочірнього вікна з клієнтської області вікна старі батьків і переміщує його до клієнтської області вікна батьків. Якщо SetParent визначає дескриптор NULL, вікна на робочому столі стає нове вікно з батьків. У цьому випадку звертається дочірнього вікна на робочому столі, за межами кордонів будь-які інші вікна. Функція GetParent повертає дескриптор вікна батьківського дочірнього вікна.

Батько вікно relinquishes частину своєї клієнтської області до дочірнього вікна, і дочірнього вікна отримує всі вхідні з цього району. Клас вікна не повинні бути однаковими для кожного з батьків вікна, windows дитини. Це означає, що програма може заповнити вікно батьків з дитиною windows, які виглядають по-різному і виконувати різні завдання. Наприклад, у діалоговому вікні може містити багато типів елементів керування, кожна з дочірнього вікна, що приймає різні види даних користувача.

Дочірнього вікна має лише одне вікно з батьків, але батьки можуть мати будь-яку кількість дитини windows. Кожне вікно дитини, в свою чергу, може мати дитини windows. У цей ланцюжок Windows кожного вікна дитини називається нащадком вікно вихідному вікні батьків. Застосунок функція IsChild , щоб виявити, чи даного вікна дочірнього вікна або нащадком вікно даного батьківського вікна.

EnumChildWindows функція перелічує батьківського вікна, windows дитини. Потім EnumChildWindows проходить маркер до кожної дитини вікна, визначений у застосунку зворотний виклик функції. Нащадком windows вікна даного батько також перераховані.

Повідомлення

Система проходить дитини вікна повідомлення для вводу безпосередньо до дочірнього вікна; повідомлення не пройшли через вікно батьків. Єдиним винятком є якщо дочірнього вікна вимкнуто за допомогою EnableWindow функції. У цьому випадку, система проходить вхідних повідомлень пішов би до вікна дитини до батьків вікна замість. Це дозволяє вікна батьків, щоб вивчити повідомлення для вводу й увімкнути дочірнього вікна, якщо це необхідно.

Дочірнього вікна можуть мати ідентифікатор унікальний ціле число. Дитина вікно ідентифікатори важливі при роботі з керування windows. Застосунок направляє елемента керування діяльності надіславши його повідомлення. Застосування використовує елемент керування дитини вікні ідентифікатор пряме повідомлення до елемента керування. Крім того, елемент керування надсилає повідомлення про вікна, що його батько. Повідомлення про містить елемент керування дитини вікно ідентифікатор, який батьківського використовує, щоб визначити які керування надсилання повідомлення. Програма визначає ідентифікатор дочірнього вікна для інших типів дитини windows, установивши параметр hMenu функції CreateWindowEx значення, а не дескриптор меню.

Index