Untergeordnete Fenster

Ein untergeordnetes Fenster hat das Format WS_CHILD und beschränkt sich auf den Clientbereich des übergeordneten Fensters. Eine Anwendung verwendet in der Regel untergeordnete Fenster um den Clientbereich des übergeordneten Fensters in Funktionsbereiche unterteilen. Erstellen Sie ein untergeordnetes Fenster durch Angabe den WS_CHILD-Stil in der CreateWindowEx -Funktion.

Ein untergeordnetes Fenster muss ein übergeordnetes Fenster. Das übergeordnete Fenster kann ein überlappendes Fenster, ein Popup-Fenster oder auch einem anderen untergeordneten Fensters sein. Das übergeordnete Fenster geben Sie beim Aufruf von CreateWindowEx. Wenn Sie das Format WS_CHILD in CreateWindowEx aber kein übergeordnetes Fenster angeben, erstellt das System das Fenster keine.

Ein untergeordnetes Fenster hat ein Clientbereich, aber keine anderen Funktionen, sofern sie explizit angefordert werden. Eine Anwendung kann Anfordern einer Titelleiste, einem Fenstermenü, minimieren und maximieren Schaltflächen, einen Rahmen und Bildlaufleisten für ein untergeordnetes Fenster, aber ein untergeordnetes Fenster kann kein Menü haben. Wenn die Anwendung einen Menü-Handle angibt, oder wenn es registriert die untergeordnete Fensterklasse erstellt das untergeordnete Fenster, wird das Menü-Handle ignoriert.

Positionierung

Das System positioniert immer ein untergeordnetes Fenster relativ zur oberen linken Ecke des Clientbereichs des übergeordneten Fensters. Kein Teil eines untergeordneten Fensters erscheint immer außerhalb der Grenzen des übergeordneten Fensters. Wenn eine Anwendung ein untergeordnetes Fenster, die größer ist als das übergeordnete Fenster oder ein untergeordnetes Fenster positioniert erstellt, so dass einige oder alle das untergeordnete Fenster über der des übergeordneten hinausreicht, beschneidet das System das untergeordnete Fenster; Das heißt, wird der Teil außerhalb der Clientbereich des übergeordneten Fensters nicht angezeigt. Aktionen, die das übergeordnete Fenster beeinflussen können das untergeordnete Fenster, auch wie folgt beeinflussen.

Übergeordnetes Fenster Untergeordnete Fenster
Zerstört Zerstört, bevor das übergeordnete Fenster zerstört wird.
Versteckt Ausgeblendet werden, bevor das übergeordnete Fenster ausgeblendet ist. Ein untergeordnetes Fenster ist sichtbar, nur, wenn das übergeordnete Fenster sichtbar ist.
Verschoben Zog mit Clientbereich des übergeordneten Fensters. Das untergeordnete Fenster ist verantwortlich für das Zeichnen des Clientbereichs nach dem Umzug.
Gezeigt Angezeigt, wenn das übergeordnete Fenster angezeigt wird.

Ausschnitt

Das System wird nicht automatisch ein untergeordnetes Fenster vom Clientbereich des übergeordneten Fensters clip. Dies bedeutet, dass das übergeordnete Fenster über das untergeordnete Fenster zieht, wenn sie eine Zeichnung in am gleichen Speicherort wie das untergeordnete Fenster führt. Das System jedoch das untergeordnete Fenster vom Clientbereich des übergeordneten Fensters clip, wenn das übergeordnete Fenster das WS_CLIPCHILDREN-Format hat. Wenn das untergeordnete Fenster abgeschnitten wird, kann nicht das übergeordnete Fenster über es zeichnen.

Ein untergeordnetes Fenster kann andere untergeordnete Fenster im selben Client-Bereich überlappen. Ein untergeordnetes Fenster, das das gleiche übergeordnete Fenster als ein oder mehrere untergeordnete Fenster teilt wird eine nebengeordnete Fensterbezeichnet. Nebengeordnete Fenster können im jeweils anderen Clientbereich zeichnen, wenn eines der untergeordneten Fenster der WS_CLIPSIBLINGS-Stil hat. Wenn ein untergeordnetes Fenster dieser Stil hat, wird ein Teil des nebengeordneten Fensters die innerhalb des untergeordneten Fensters liegt abgeschnitten.

Wenn ein Fenster der WS_CLIPCHILDREN oder WS_CLIPSIBLINGS-Stil, ein leichter Verlust in Leistung tritt hat. Jedes Fenster nimmt Systemressourcen, sodass eine Anwendung nicht wahllos untergeordneten Fenster verwenden sollten. Für eine optimale Leistung sollte eine Anwendung, die logisch sein Hauptfenster unterteilen muss, in die Fensterprozedur des Hauptfensters anstatt mit untergeordneten Fenster tun.

Beziehung zum übergeordneten Fenster

Eine Anwendung kann das übergeordnete Fenster eines vorhandenen untergeordneten Fensters ändern, durch Aufrufen der Funktion SetParent . In diesem Fall das System entfernt das untergeordnete Fenster aus den Clientbereich des übergeordneten Fensters alte und verschiebt ihn in den Clientbereich des neuen übergeordneten Fensters. Wenn SetParent einen NULL-Handle angibt, wird das desktop-Fenster die neue übergeordnete Fenster. In diesem Fall wird das untergeordnete Fenster auf dem Desktop, außerhalb der Grenzen eines beliebigen anderen Fensters gezeichnet. Die GetParent -Funktion Ruft einen Handle für ein untergeordnetes Fenster übergeordneten Fensters.

Das übergeordnete Fenster gibt einen Teil des Clientbereichs auf ein untergeordnetes Fenster, und das untergeordnete Fenster empfängt alle Eingaben aus diesem Bereich. Die Window-Klasse muss nicht für jede der untergeordneten Fenster des übergeordneten Fensters identisch sein. Dies bedeutet, dass eine Anwendung ein übergeordnetes Fenster mit untergeordneten Fenster ausfüllen kann, die unterschiedlich aussehen und verschiedene Aufgaben. Beispielsweise kann ein Dialogfeld viele Typen von Steuerelementen, jeweils ein untergeordnetes Fenster enthalten, die verschiedene Arten von Daten vom Benutzer akzeptiert.

Ein untergeordnetes Fenster hat nur ein übergeordnetes Fenster, aber ein übergeordnetes Element kann eine beliebige Anzahl von untergeordneten Fenster haben. Jede untergeordnete Fenster, kann wiederum untergeordnete Fenster haben. In dieser Kette von Windows wird jede untergeordnete Fenster ein untergeordneten Fensters des ursprünglichen übergeordneten Fensters aufgerufen. Eine Anwendung verwendet die IsChild -Funktion um zu ermitteln, ob ein bestimmtes Fenster ein untergeordnetes Fenster oder in einem untergeordneten Fenster des angegebenen übergeordneten Fensters ist.

Die EnumChildWindows -Funktion Listet die untergeordneten Fenster des übergeordneten Fensters. EnumChildWindows übergibt dann das Handle an jedes untergeordnete Fenster eine anwendungsdefinierte Rückruffunktion. Werden auch die untergeordneten Fenster des angegebenen übergeordneten Fensters aufgezählt.

Nachrichten

Das System übergibt ein Kind des Fensters Eingabenachrichten direkt an das untergeordnete Fenster; die Nachrichten werden nicht über das übergeordnete Fenster geleitet. Die einzige Ausnahme ist wenn das untergeordnete Fenster hat von der EnableWindow -Funktion deaktiviert wurde. In diesem Fall übergibt das System alle Eingabemeldungen, die an das untergeordnete Fenster an das übergeordnete Fenster statt gegangen wäre. Dies ermöglicht das übergeordnete Fenster, überprüfen Sie die Eingabe, und aktivieren Sie das untergeordnete Fenster, wenn notwendig.

Ein untergeordnetes Fenster kann einen eindeutiger, ganzzahliger Bezeichner verfügen. Kind-Fenster-IDs sind wichtig bei der Arbeit mit Steuerelement Windows. Eine Anwendung weist ein Steuerelement Aktivität durch senden Nachrichten. Die Anwendung verwendet das Steuerelement untergeordnete Fenster Bezeichner, um die Meldungen an das Steuerelement zu verweisen. Darüber hinaus sendet ein Steuerelement Benachrichtigungen an sein übergeordnetes Fenster. Eine Benachrichtigung enthält das Steuerelement untergeordnete Fenster Bezeichner, der das übergeordnete Element zum Identifizieren verwendet welches Steuerelement die Nachricht gesendet. Eine Anwendung gibt die ChildWindow ID für andere Arten von untergeordneten Fenstern durch Festlegen des Parameters hMenu der CreateWindowEx -Funktion einen Wert anstatt ein Menü-handle.

Index