Fereastra copil

O fereastra copil are stilul WS_CHILD și este limitată la zona de client de fereastra sa mamă. O cerere utilizează de obicei copil windows pentru a împărți zona client o fereastră părinte în zonele funcționale. Creați o fereastra copil specificând stilul WS_CHILD în funcția de CreateWindowEx.

O fereastră de copil trebuie să aibă o fereastră părinte. Fereastra părinte poate fi o fereastra suprapus, o fereastra pop-up, sau chiar un alt copil fereastra. Specificați fereastra părinte când apelați CreateWindowEx. Dacă specificați stilul WS_CHILD în CreateWindowEx , dar nu se specifică o fereastră părinte, sistemul nu creează fereastra.

O fereastră de copil are o zonă de client, dar nu alte caracteristici, în cazul în care acestea sunt solicitate în mod explicit. O cerere puteți solicita un titlu, o fereastra meniul din bara, Minimizare și Maximizare, butoane, o bordură și barele de defilare pentru o fereastră de copil, dar o fereastra copil nu poate avea un meniu. Dacă aplicarea specifică un mâner de meniu, fie atunci când se înregistrează clasă de Ferestre copilului creează fereastra copil, ghidajul de meniu este ignorat.

Poziționare

Sistemul poziții întotdeauna o fereastră de copil relativ la colțul din stânga-sus din zona clientului său fereastra părinte. Nici o parte a unei ferestre de copil vreodată apare în afara frontierelor sale fereastra părinte. În cazul în care o cerere creează o fereastră de copil care este mai mare decât fereastra părinte sau poziții o fereastră de copil, astfel încât unele sau toate din fereastra copil se extinde dincolo de frontierele de mamă, sistemul clipuri fereastra copil; Asta este, partea în afara zonei de client fereastra părinte nu este afișată. Ac?iunile care afectează fereastra de mamă, de asemenea, poate afecta fereastra copil, după cum urmează.

Fereastra părinte Fereastra copil
Distruse Distrus înainte de fereastra părinte este distrus.
Ascunse Ascunse înainte de fereastra părinte este ascuns. O fereastră de copil este vizibil numai când fereastra părinte este vizibil.
S-a mutat S-a mutat cu fereastra părinte client zona. Fereastra copil este responsabil pentru pictura zona client după mutare.
Indicat Indicat după ce este afișată fereastra părinte.

Tăiere

Sistemul automat miniaturi, nu, o fereastră de copil din fereastra părinte client zona. Acest lucru înseamnă fereastra părinte atrage peste fereastra copil în cazul în care se efectuează orice desen în aceeași locație ca fereastra copil. Cu toate acestea, sistemul clip fereastra copil din fereastra părinte client zona dacă fereastra părinte are stilul WS_CLIPCHILDREN. Dacă fereastra copil este tăiate, fereastra părinte nu poate trage peste ea.

O fereastră de copil poate suprapune alte ferestre copilului în aceeași zonă de client. O fereastră de copil care partajează aceeași fereastră părinte ca una sau mai multe ferestre copilului este numit un frate fereastra. Frate windows poate desena în fiecare alte 's client zona, în cazul în care una dintre ferestre copil are stilul WS_CLIPSIBLINGS. Dacă o fereastra copil au acest stil, orice parte din fereastra sa frate care se află în fereastra copil se tunde.

Dacă o fereastră are stilul WS_CLIPCHILDREN sau WS_CLIPSIBLINGS, are loc o ușoară pierdere în performanță. Fiecare fereastră preia resursele de sistem, astfel încât o cerere nu trebuie să utilizați windows copil fără discriminare. Pentru performanțe optime, o aplicație care are nevoie pentru a împărți logic sa fereastra principală ar trebui să facă acest lucru în procedura fereastra din fereastra principală, mai degrabă decât utilizând windows copil.

Rela?ia cu fereastra părinte

Cererea poate modifica fereastra părinte de o fereastra copil existente prin funcția SetParent de asteptare. În acest caz, sistemul elimină fereastra copil din zonă client din fereastra de mamă vechi și mută în zona clientului din fereastra părinte noi. Dacă SetParent specifică un handle NULL, fereastra desktop devine fereastra părinte noi. În acest caz, fereastra copil este trase pe desktop, în afara hotarelor de orice altă fereastră. Funcția GetParent preia un mâner pentru fereastra părinte o fereastră de copil.

Fereastra părinte relinquishes o parte a zonei sale de client într-o fereastră de copil, și fereastra copil primește toate intrare din acest domeniu. Clasa fereastra nu trebuie să fie aceeași pentru fiecare copil Ferestre de fereastra părinte. Acest lucru înseamnă că cererea poate umple o fereastră părinte cu windows copil care arăta diferit și să efectueze sarcini diferite. De exemplu, o casetă de dialog pot conține multe tipuri de controale, fiecare dintre ele o fereastră de copil care acceptă multe tipuri diferite de date la utilizator.

O fereastră de copil a fereastra părinte singur, dar un părinte poate avea orice număr de copil windows. Fiecare fereastră de copil, la rândul său, poate avea copil windows. În acest lanț de Ferestre, fiecare fereastră de copil este numit o fereastră descendent din fereastra părinte original. O cerere utilizează funcția IsChild pentru a descoperi dacă o fereastră dată este o fereastră de copil sau o fereastră descendent o fereastră părinte dat.

Funcția EnumChildWindows enumeră copil Ferestre de un fereastra părinte. Apoi, EnumChildWindows trece ghidajul pentru fiecare fereastră de copil la o funcție de apel invers definite de aplicare. Windows descendent din fereastra părinte dat, de asemenea, sunt enumerate.

Mesaje

Sistemul trece un copil din fereastra intrare mesaje direct la fereastra copil; mesajele nu sunt transmise prin fereastra părinte. Singura excepție este dacă fereastra copil a fost dezactivată de către funcția de EnableWindow . În acest caz, sistemul trece orice intrare mesaje care ar fi mers la fereastra copil în fereastra părinte în schimb. Acest lucru permite fereastra părinte pentru a examina mesajele intrare și permite fereastra copil, dacă este necesar.

O fereastră de copil poate avea un identificator unic întreg. Identificatori de fereastra copil sunt importante atunci când se lucrează cu control windows. O cerere direcționează activitatea unui control de a trimite mesaje. Aplicația utilizează controlului copil fereastra identificator directă la mesaje pentru a controlului. În plus, un control a trimite mesajele de notificare în fereastra sa mamă. Un mesaj de notificare include controlului copil fereastra identificator, care mamă se utilizează pentru a identifica control care a trimis mesajul. Cererea specifică identificatorul copil-fereastra pentru alte tipuri de copil windows setând parametrul hMenu al funcției CreateWindowEx la o valoare, mai degrabă decât un mâner de meniu.

Index