Underordnet vindu

Et underordnet vindu har WS_CHILD-stil og er begrenset til klientområdet for det overordnede vinduet. Et program bruker vanligvis underordnede vinduer til å dele klientområdet for et overordnet vindu i funksjonelle områder. Du oppretter et underordnet vindu ved å angi stilen for WS_CHILD i CreateWindowEx -funksjonen.

Et underordnet vindu må ha et overordnet vindu. Det overordnede vinduet kan være et overlappet vindu, et popup-vindu eller en annen undervindu. Du kan angi det overordnede vinduet når du kaller CreateWindowEx. Hvis du angir WS_CHILD-stil i CreateWindowEx , men ikke angir et overordnet vindu, oppretter systemet ikke vinduet.

Et underordnet vindu har en klient-området, men ingen andre funksjoner, med mindre de er eksplisitt bedt om. Et program kan be om en tittel bar, en Vindu-menyen, minimere og maksimere knapper, en kantlinje og rullefelt for et underordnet vindu, men et underordnet vindu kan ikke ha en meny. Hvis programmet angir en Menyreferanse, enten når det registrerer barnets vindusklasse eller oppretter det underordnede vinduet, ignoreres Menyreferanse.

Posisjonering

Systemet plasserer alltid et underordnet vindu forhold til øverste venstre hjørne av det overordnede vinduet klientområdet. Ingen del av et underordnet vindu vises noensinne utenfor kantlinjene i det overordnede vinduet. Hvis et program oppretter et underordnet vindu som er større enn det overordnede vinduet eller stillinger et underordnet vindu slik at noen eller alle av det underordnede vinduet går utenfor kantlinjene for det overordnede området, klipp systemet undervindu; det vil si vises delen utenfor klientområdet for det overordnede vinduet ikke. Handlinger som påvirker det overordnede vinduet kan også påvirke det underordnede vinduet, som følger.

Overordnet vindu Underordnet vindu
Ødelagt Ødelagt før det overordnede vinduet er ødelagt.
Skjult Skjult for det overordnede vinduet er skjult. Et underordnet vindu er synlig bare når det overordnede vinduet er synlig.
Flyttet Flyttet med det overordnede vinduet klientområdet. Det underordnede vinduet er ansvarlig for å male klientområdet etter farten.
Vist Vises etter det overordnede vinduet er vist.

Klipping

Systemet utklipp ikke automatisk et underordnet vindu fra det overordnede vinduet klientområdet. Dette betyr at det overordnede vinduet trekker over det underordnede vinduet hvis det utfører alle tegningene på samme sted som det underordnede vinduet. Systemet imidlertid Klips det underordnede vinduet fra klientområdet for det overordnede vinduet hvis det overordnede vinduet har stilen WS_CLIPCHILDREN. Hvis det underordnede vinduet er beskåret, kan ikke det overordnede vinduet tegne over det.

Et underordnet vindu kan overlappe andre underordnede vinduer i samme klientområdet. Et underordnet vindu som deler samme overordnet vindu som én eller flere underordnede vinduer kalles et søsken-vinduet. Søsken windows kan tegne i hverandres klientområdet, med mindre ett av de underordnede vinduene har stilen WS_CLIPSIBLINGS. Hvis et underordnet vindu, har denne stilen, er deler vinduet søsken som ligger innenfor det underordnede vinduet beskåret.

Hvis et vindu har enten WS_CLIPCHILDREN eller WS_CLIPSIBLINGS-stil, oppstår det en liten tap i ytelse. Hvert vindu opptar systemressurser, slik at et program ikke skal bruke underordnede vinduer indiscriminately. For best ytelse, bør et program som trenger å logisk dele sin hovedvinduet gjøre dette i vinduet fremgangsmåten i hovedvinduet i stedet for ved hjelp av underordnede vinduer.

Forhold til overordnet vindu

Et program kan endre det overordnede vinduet i en eksisterende undervindu ved å kalle SetParent -funksjonen. I dette tilfellet er systemet fjerner det underordnede vinduet fra klientområdet for det gamle overordnede vinduet og flytter den til klientområdet for det nye overordnede-vinduet. Hvis SetParent angir en NULL-referanse, blir skrivebordsvinduet det nye overordnede-vinduet. I dette tilfellet er det underordnede vinduet trukket på skrivebordet, utenfor kantlinjene i et annet vindu. Funksjonen GetParent henter en referanse til et underordnet vindu overordnet vindu.

Det overordnede vinduet gir avkall på en del av sitt klient-område til et underordnet vindu, og det underordnede vinduet mottar alle inndata fra dette området. Vindusklassen trenger ikke være det samme for hver av de underordnede vinduene i det overordnede vinduet. Dette betyr at et program kan fylle et overordnet vindu med underordnede vinduer som ser annerledes ut og utføre ulike oppgaver. En dialogboks kan for eksempel inneholde mange typer kontroller, hver enkelt et underordnet vindu som godtar forskjellige typer data fra brukeren.

Et underordnet vindu har bare én overordnet vindu, men en forelder kan ha et hvilket som helst antall underordnede vinduer. De underordnede vinduene, kan i sin tur har underordnede vinduer. De underordnede vinduene kalles i denne kjeden av windows, en etterkommer vinduet av vinduet overordnede. Et program bruker IsChild -funksjonen til å oppdage om et gitt vindu er et underordnet vindu eller en etterkommer vinduet i et gitt overordnet vindu.

Funksjonen EnumChildWindows nummererer de underordnede vinduene i et overordnet vindu. EnumChildWindows sender deretter håndtaket til de underordnede vinduene til en programdefinert tilbakekall-funksjonen. Etterkommer windows i vinduet gitt overordnede er også nummerert.

Meldinger

Systemet sender et barn vinduets inndatameldinger direkte til det underordnede vinduet; meldingene er ikke gått gjennom det overordnede vinduet. Det eneste unntaket er hvis det underordnede vinduet har blitt deaktivert av funksjonen EnableWindow . I dette tilfellet, sender systemet en hvilken som helst inndatameldinger som ville ha gått til det underordnede vinduet til det overordnede vinduet i stedet. Dette gjør at det overordnede vinduet til å undersøke inndatameldinger og aktivere det underordnede vinduet, om nødvendig.

Et underordnet vindu kan ha et unikt heltall-identifikator. Underordnede vinduet identifikatorer er viktig når du arbeider med administrere Vinduer. Et program som dirigerer en kontrolls aktivitet ved å sende det meldinger. Programmet bruker kontrollens underordnede vinduet identifikator for direkte meldinger til kontrollen. I tillegg sender en kontroll varselmeldinger til det overordnede vinduet. En varslingsmelding inneholder kontrollens underordnede vinduet ID som overordnet bruker til å identifisere hvilken kontroll som sendte meldingen. Et program angir undervindu identifikatoren for andre typer underordnede vinduer ved å sette parameteren hMenu CreateWindowEx -funksjonen til en verdi i stedet for et håndtak i menyen.

Index