Info

In diesem Thema werden die Programmierelemente beschrieben, die Von Anwendungen zum Erstellen und Verwenden von Fenstern verwendet werden. Verwalten von Beziehungen zwischen Fenstern; und Größe, Verschieben und Anzeigen von Fenstern.

Die Übersicht enthält die folgenden Themen.

Desktopfenster

Wenn Sie das System starten, wird automatisch das Desktopfenster erstellt. Das Desktopfenster ist ein systemdefiniertes Fenster, das den Hintergrund des Bildschirms zeichnet und als Basis für alle Fenster dient, die von allen Anwendungen angezeigt werden.

Das Desktopfenster verwendet eine Bitmap, um den Hintergrund des Bildschirms zu zeichnen. Das von der Bitmap erstellte Muster wird als Desktophintergrund bezeichnet. Standardmäßig verwendet das Desktopfenster die Bitmap aus einer .bmp Datei, die in der Registrierung als Desktophintergrund angegeben ist.

Die GetDesktopWindow-Funktion gibt ein Handle an das Desktopfenster zurück.

Eine Systemkonfigurationsanwendung, z. B. ein Systemsteuerung Element, ändert das Desktophintergrund mithilfe der SystemParametersInfo-Funktion, wobei der wAction-Parameter auf SPI_SETDESKWALLPAPER und der lpvParam-Parameter einen Bitmapdateinamen angibt. SystemParametersInfo lädt dann die Bitmap aus der angegebenen Datei, verwendet die Bitmap, um den Hintergrund des Bildschirms zu zeichnen, und gibt den neuen Dateinamen in die Registrierung ein.

Anwendungsfenster

Jede grafische Windows-basierte Anwendung erstellt mindestens ein Fenster, das als Standard-Fenster bezeichnet wird und als primäre Schnittstelle zwischen dem Benutzer und der Anwendung fungiert. Die meisten Anwendungen erstellen auch direkt oder indirekt andere Fenster, um Aufgaben im Zusammenhang mit dem Standard-Fenster auszuführen. Jedes Fenster spielt eine Rolle beim Anzeigen der Ausgabe und beim Empfangen von Eingaben vom Benutzer.

Wenn Sie eine Anwendung starten, ordnet das System der Anwendung auch eine Taskleistenschaltfläche zu. Die Taskleistenschaltfläche enthält das Programmsymbol und den Titel. Wenn die Anwendung aktiv ist, wird ihre Taskleistenschaltfläche im pushed-Zustand angezeigt.

Ein Anwendungsfenster enthält Elemente wie eine Titelleiste, eine Menüleiste, das Fenstermenü (früher als Systemmenü bezeichnet), die Schaltfläche "Minimieren", die Schaltfläche "Maximieren", die Schaltfläche "Wiederherstellen", die Schaltfläche "Schließen", einen Größenrahmen, einen Clientbereich, eine horizontale Bildlaufleiste und eine vertikale Bildlaufleiste. Das Standard-Fenster einer Anwendung umfasst in der Regel alle diese Komponenten. Die folgende Abbildung zeigt diese Komponenten in einem typischen Standard Fenster.

typisches Fenster

Clientbereich

Der Clientbereich ist der Teil eines Fensters, in dem die Anwendung Ausgabe anzeigt, z. B. Text oder Grafiken. Beispielsweise zeigt eine Desktopveröffentlichungsanwendung die aktuelle Seite eines Dokuments im Clientbereich an. Die Anwendung muss eine Funktion bereitstellen, die als Fensterprozedur bezeichnet wird, um Eingaben für das Fenster zu verarbeiten und die Ausgabe im Clientbereich anzuzeigen. Weitere Informationen finden Sie unter Window Procedures.

Nichtclientbereich

Titelleiste, Menüleiste, Fenstermenü, Schaltflächen minimieren und maximieren, Rahmen und Bildlaufleisten werden zusammen als Nichtclientbereich des Fensters bezeichnet. Das System verwaltet die meisten Aspekte des Nichtclientbereichs; Die Anwendung verwaltet die Darstellung und das Verhalten ihres Clientbereichs.

Die Titelleiste zeigt ein anwendungsdefiniertes Symbol und eine Textzeile an. in der Regel gibt der Text den Namen der Anwendung oder den Zweck des Fensters an. Eine Anwendung gibt das Symbol und den Text beim Erstellen des Fensters an. Die Titelleiste ermöglicht es dem Benutzer auch, das Fenster mit einer Maus oder einem anderen Zeigegerät zu verschieben.

Die meisten Anwendungen enthalten eine Menüleiste , die die von der Anwendung unterstützten Befehle auflistet. Elemente in der Menüleiste stellen die Standard Kategorien von Befehlen dar. Wenn Sie auf ein Element in der Menüleiste klicken, wird in der Regel ein Popupmenü geöffnet, dessen Elemente den Aufgaben in einer bestimmten Kategorie entsprechen. Durch Klicken auf einen Befehl weist der Benutzer die Anwendung an, eine Aufgabe auszuführen.

Das Fenstermenü wird vom System erstellt und verwaltet. Es enthält einen Standardsatz von Menüelementen, die bei Auswahl durch den Benutzer die Größe oder Position eines Fensters festlegen, die Anwendung schließen oder Aufgaben ausführen. Weitere Informationen finden Sie unter Menüs.

Die Schaltflächen in der oberen rechten Ecke wirken sich auf die Größe und Position des Fensters aus. Wenn Sie auf die Schaltfläche Maximieren klicken, vergrößert das System das Fenster auf die Bildschirmgröße und positioniert das Fenster, sodass es den gesamten Desktop abzüglich der Taskleiste abdeckt. Gleichzeitig ersetzt das System die Schaltfläche "Maximieren" durch die Schaltfläche "Wiederherstellen". Wenn Sie auf die Schaltfläche "Wiederherstellen" klicken, stellt das System die vorherige Größe und Position des Fensters wieder her. Wenn Sie auf die Schaltfläche minimieren klicken, reduziert das System das Fenster auf die Größe seiner Taskleistenschaltfläche, positioniert das Fenster über der Taskleistenschaltfläche und zeigt die Taskleistenschaltfläche im normalen Zustand an. Um die vorherige Größe und Position der Anwendung wiederherzustellen, klicken Sie auf die Entsprechende Taskleistenschaltfläche. Wenn Sie auf die Schaltfläche zum Schließen klicken, wird die Anwendung beendet.

Der Rahmen für die Größenanpassung ist ein Bereich um den Umkreis des Fensters, der es dem Benutzer ermöglicht, das Fenster mithilfe einer Maus oder eines anderen Zeigegeräts zu vergrößern.

Die horizontale Bildlaufleiste und die vertikale Bildlaufleiste konvertieren Maus- oder Tastatureingaben in Werte, die eine Anwendung verwendet, um den Inhalt des Clientbereichs horizontal oder vertikal zu verschieben. Beispielsweise stellt eine Textverarbeitungsanwendung, die ein langes Dokument anzeigt, in der Regel eine vertikale Bildlaufleiste bereit, mit der der Benutzer das Dokument auf- und abblättern kann.

Steuerelemente und Dialogfelder

Eine Anwendung kann zusätzlich zum Standard Fenster mehrere Arten von Fenstern erstellen, einschließlich Steuerelementen und Dialogfeldern.

Ein Steuerelement ist ein Fenster, das von einer Anwendung verwendet wird, um bestimmte Informationen vom Benutzer abzurufen, z. B. den Namen einer zu öffnenden Datei oder die gewünschte Punktgröße einer Textauswahl. Anwendungen verwenden auch Steuerelemente, um Informationen abzurufen, die zum Steuern eines bestimmten Features einer Anwendung erforderlich sind. Beispielsweise stellt eine Textverarbeitungsanwendung in der Regel ein Steuerelement bereit, mit dem der Benutzer den Wortumbruch ein- und ausschalten kann. Weitere Informationen finden Sie unter Windows-Steuerelemente.

Steuerelemente werden immer in Verbindung mit einem anderen Fenster verwendet, in der Regel ein Dialogfeld. Ein Dialogfeld ist ein Fenster, das mindestens ein Steuerelement enthält. Eine Anwendung verwendet ein Dialogfeld, um den Benutzer zur Eingabe aufzufordern, die zum Ausführen eines Befehls erforderlich ist. Beispielsweise würde eine Anwendung, die einen Befehl zum Öffnen einer Datei enthält, ein Dialogfeld mit Steuerelementen anzeigen, in denen der Benutzer einen Pfad und Dateinamen angibt. Dialogfelder verwenden in der Regel nicht den gleichen Satz von Fensterkomponenten wie ein Standard Fenster. Die meisten verfügen über eine Titelleiste, ein Fenstermenü, einen Rahmen (ohne Größenanpassung) und einen Clientbereich, aber sie verfügen in der Regel nicht über eine Menüleiste, schaltflächen minimieren und maximieren oder Bildlaufleisten. Weitere Informationen finden Sie unter Dialogfelder.

Ein Meldungsfeld ist ein spezielles Dialogfeld, in dem dem Benutzer eine Notiz, eine Warnung oder eine Warnung angezeigt wird. Beispielsweise kann ein Meldungsfeld den Benutzer über ein Problem informieren, das bei der Anwendung beim Ausführen einer Aufgabe aufgetreten ist. Weitere Informationen finden Sie unter Meldungsfelder.

Fensterattribute

Eine Anwendung muss beim Erstellen eines Fensters die folgenden Informationen bereitstellen. (Mit Ausnahme des Fensterhandles, das die Erstellungsfunktion zurückgibt, um das neue Fenster eindeutig zu identifizieren.)

Diese Fensterattribute werden in den folgenden Abschnitten beschrieben.

Klassenname

Jedes Fenster gehört zu einer Fensterklasse. Eine Anwendung muss eine Fensterklasse registrieren, bevor Fenster dieser Klasse erstellt werden. Die Fensterklasse definiert die meisten Aspekte der Darstellung und des Verhaltens eines Fensters. Die Hauptkomponente einer Fensterklasse ist die Fensterprozedur, eine Funktion, die alle an das Fenster gesendeten Eingaben und Anforderungen empfängt und verarbeitet. Das System stellt die Eingaben und Anforderungen in Form von Nachrichten bereit. Weitere Informationen finden Sie unter Fensterklassen, Fensterprozeduren und Nachrichten- und Nachrichtenwarteschlangen.

Fenstername

Ein Fenstername ist eine Textzeichenfolge, die ein Fenster für den Benutzer identifiziert. Ein Standard Fenster, Dialogfeld oder Meldungsfeld zeigt in der Regel den Namen des Fensters in der Titelleiste an, sofern vorhanden. Ein Steuerelement kann je nach Klasse des Steuerelements seinen Fensternamen anzeigen. Beispielsweise zeigen Schaltflächen, Bearbeitungssteuerelemente und statische Steuerelemente ihre Fensternamen innerhalb des Rechtecks an, das vom Steuerelement belegt ist. Bei Steuerelementen wie Listenfeldern und Kombinationsfeldern werden ihre Fensternamen jedoch nicht angezeigt.

Um den Fensternamen nach dem Erstellen eines Fensters zu ändern, verwenden Sie die SetWindowText-Funktion . Diese Funktion verwendet die Funktionen GetWindowTextLength und GetWindowText , um die aktuelle Fensternamenzeichenfolge aus dem Fenster abzurufen.

Fensterstil

Jedes Fenster verfügt über eine oder mehrere Fensterstile. Ein Fensterstil ist eine benannte Konstante, die einen Aspekt der Darstellung und des Verhaltens des Fensters definiert, der nicht von der -Klasse des Fensters angegeben wird. Eine Anwendung legt beim Erstellen von Fenstern in der Regel Fensterstile fest. Außerdem können die Stile nach dem Erstellen eines Fensters mithilfe der SetWindowLong-Funktion festgelegt werden.

Das System und bis zu einem gewissen Grad die Fensterprozedur für die -Klasse interpretieren die Fensterstile.

Einige Fensterstile gelten für alle Fenster, aber die meisten gelten für Fenster bestimmter Fensterklassen. Die allgemeinen Fensterstile werden durch Konstanten dargestellt, die mit dem präfix WS_ beginnen. Sie können mit dem OR-Operator kombiniert werden, um verschiedene Fenstertypen zu bilden, einschließlich Standard Fenstern, Dialogfeldern und untergeordneten Fenstern. Die klassenspezifischen Fensterstile definieren die Darstellung und das Verhalten von Fenstern, die zu den vordefinierten Steuerelementklassen gehören. Beispielsweise gibt die SCROLLBAR-Klasse ein Bildlaufleisten-Steuerelement an, aber die Formatvorlagen SBS_HORZ und SBS_VERT bestimmen, ob ein horizontales oder vertikales Bildlaufleisten-Steuerelement erstellt wird.

Listen von Formatvorlagen, die von Fenstern verwendet werden können, finden Sie in den folgenden Themen:

Erweiterte Fensterformatvorlage

Jedes Fenster kann optional eine oder mehrere erweiterte Fensterstile aufweisen. Ein erweiterter Fensterstil ist eine benannte Konstante, die einen Aspekt der Darstellung und des Verhaltens des Fensters definiert, der nicht von der Fensterklasse oder den anderen Fensterstilen angegeben wird. Eine Anwendung legt beim Erstellen von Fenstern in der Regel erweiterte Fensterstile fest. Außerdem können die Stile nach dem Erstellen eines Fensters mithilfe der SetWindowLong-Funktion festgelegt werden.

Weitere Informationen finden Sie unter CreateWindowEx.

Position

Die Position eines Fensters wird als Koordinaten der oberen linken Ecke definiert. Diese Koordinaten, manchmal auch als Fensterkoordinaten bezeichnet, sind immer relativ zur oberen linken Ecke des Bildschirms oder bei einem untergeordneten Fenster der oberen linken Ecke des Clientbereichs des übergeordneten Fensters. Ein Fenster auf oberster Ebene mit den Koordinaten (10,10) wird beispielsweise 10 Pixel rechts neben der oberen linken Ecke des Bildschirms und 10 Pixel nach unten platziert. Ein untergeordnetes Fenster mit den Koordinaten (10,10) wird 10 Pixel rechts von der oberen linken Ecke des Clientbereichs des übergeordneten Fensters und 10 Pixel nach unten platziert.

Die WindowFromPoint-Funktion ruft ein Handle für das Fenster ab, das einen bestimmten Punkt auf dem Bildschirm einnimmt. Ebenso rufen die Funktionen ChildWindowFromPoint und ChildWindowFromPointEx ein Handle für das untergeordnete Fenster ab, das einen bestimmten Punkt im Clientbereich des übergeordneten Fensters einnimmt. Obwohl ChildWindowFromPointEx unsichtbare, deaktivierte und transparente untergeordnete Fenster ignorieren kann, kann ChildWindowFromPoint nicht.

Size

Die Größe eines Fensters (Breite und Höhe) wird in Pixel angegeben. Ein Fenster kann eine Breite oder Höhe von 0 (null) aufweisen. Wenn eine Anwendung die Breite und Höhe eines Fensters auf 0 (null) festlegt, legt das System die Größe auf die standardmäßige mindeste Fenstergröße fest. Um die standardmäßige minimale Fenstergröße zu ermitteln, verwendet eine Anwendung die GetSystemMetrics-Funktion mit den flags SM_CXMIN und SM_CYMIN .

Eine Anwendung muss möglicherweise ein Fenster mit einem Clientbereich einer bestimmten Größe erstellen. Die Funktionen AdjustWindowRect und AdjustWindowRectEx berechnen die erforderliche Größe eines Fensters basierend auf der gewünschten Größe des Clientbereichs. Die Anwendung kann die resultierenden Größenwerte an die CreateWindowEx-Funktion übergeben.

Eine Anwendung kann ein Fenster so groß dimensionieren, dass es extrem groß ist. Ein Fenster sollte jedoch nicht so groß sein, dass es größer als der Bildschirm ist. Vor dem Festlegen der Größe eines Fensters sollte die Anwendung die Breite und Höhe des Bildschirms mithilfe von GetSystemMetrics mit den flags SM_CXSCREEN und SM_CYSCREEN überprüfen.

Handle für übergeordnetes oder besitzergeführtes Fenster

Ein Fenster kann über ein übergeordnetes Fenster verfügen. Ein Fenster mit einem übergeordneten Fenster wird als untergeordnetes Fenster bezeichnet. Das übergeordnete Fenster stellt das Koordinatensystem bereit, das zum Positionieren eines untergeordneten Fensters verwendet wird. Ein übergeordnetes Fenster wirkt sich auf Aspekte der Darstellung eines Fensters aus. Beispielsweise wird ein untergeordnetes Fenster abgeschnitten, sodass kein Teil des untergeordneten Fensters außerhalb der Rahmen des übergeordneten Fensters angezeigt werden kann.

Ein Fenster, das über kein übergeordnetes Fenster verfügt oder dessen übergeordnetes Fenster das Desktopfenster ist, wird als Fenster der obersten Ebene bezeichnet. Eine Anwendung kann die EnumWindows-Funktion verwenden, um ein Handle für jedes Fenster der obersten Ebene auf dem Bildschirm abzurufen. EnumWindows übergibt das Handle wiederum an jedes Fenster der obersten Ebene an die anwendungsdefinierte Rückruffunktion EnumWindowsProc.

Ein Fenster auf oberster Ebene kann ein anderes Fenster besitzen oder sich im Besitz dieses Fensters befinden. Ein eigenes Fenster wird immer vor dem Besitzerfenster angezeigt, ist ausgeblendet, wenn das Besitzerfenster minimiert wird, und wird zerstört, wenn das Besitzerfenster zerstört wird. Weitere Informationen finden Sie unter Besitzer von Windows.

Ein untergeordnetes Fenster kann einen untergeordneten Fensterbezeichner haben, einen eindeutigen, von der Anwendung definierten Wert, der dem untergeordneten Fenster zugeordnet ist. Bezeichner für untergeordnete Fenster sind besonders nützlich in Anwendungen, die mehrere untergeordnete Fenster erstellen. Beim Erstellen eines untergeordneten Fensters gibt eine Anwendung den Bezeichner des untergeordneten Fensters an. Nach dem Erstellen des Fensters kann die Anwendung den Bezeichner des Fensters mithilfe der SetWindowLong-Funktion ändern oder den Bezeichner mithilfe der GetWindowLong-Funktion abrufen.

Jedes Fenster, mit Ausnahme eines untergeordneten Fensters, kann über ein Menü verfügen. Eine Anwendung kann ein Menü einschließen, indem sie entweder beim Registrieren der -Klasse des Fensters oder beim Erstellen des Fensters ein Menühandle bereitstellt.

Anwendungsinstanzhandle

Jeder Anwendung ist ein instance Handle zugeordnet. Das System stellt das instance Handle für eine Anwendung bereit, wenn die Anwendung gestartet wird. Da mehrere Kopien derselben Anwendung ausgeführt werden können, verwendet das System intern instance Handles, um eine instance einer Anwendung von einer anderen zu unterscheiden. Die Anwendung muss das instance-Handle in vielen verschiedenen Fenstern angeben, einschließlich derjenigen, die Fenster erstellen.

Erstellen von Daten

Jedem Fenster können anwendungsdefinierte Erstellungsdaten zugeordnet sein. Wenn das Fenster zum ersten Mal erstellt wird, übergibt das System einen Zeiger auf die Daten an die Fensterprozedur des zu erstellenden Fensters. Die Fensterprozedur verwendet die Daten, um anwendungsdefinierte Variablen zu initialisieren.

Fensterhandle

Nach dem Erstellen eines Fensters gibt die Erstellungsfunktion ein Fensterhandle zurück, das das Fenster eindeutig identifiziert. Ein Fensterhandle hat den HWND-Datentyp . Eine Anwendung muss diesen Typ beim Deklarieren einer Variablen verwenden, die ein Fensterhandle enthält. Eine Anwendung verwendet dieses Handle in anderen Funktionen, um ihre Aktionen an das Fenster weiterzuleiten.

Eine Anwendung kann die FindWindow-Funktion verwenden, um zu ermitteln, ob ein Fenster mit dem angegebenen Klassen- oder Fensternamen im System vorhanden ist. Wenn ein solches Fenster vorhanden ist, gibt FindWindow ein Handle an das Fenster zurück. Verwenden Sie die FindWindowEx-Funktion , um die Suche auf die untergeordneten Fenster einer bestimmten Anwendung zu beschränken.

Die IsWindow-Funktion bestimmt, ob ein Fensterhandle ein gültiges, vorhandenes Fenster identifiziert. Es gibt spezielle Konstanten, die ein Fensterhandle in bestimmten Funktionen ersetzen können. Beispielsweise kann eine Anwendung HWND_BROADCAST in den Funktionen SendMessage und SendMessageTimeout oder HWND_DESKTOP in der MapWindowPoints-Funktion verwenden.

Fenstererstellung

Verwenden Sie zum Erstellen von Anwendungsfenstern die Funktion CreateWindow oder CreateWindowEx . Sie müssen die erforderlichen Informationen bereitstellen, um die Fensterattribute zu definieren. CreateWindowEx verfügt über den Parameter dwExStyle, den CreateWindow nicht hat. andernfalls sind die Funktionen identisch. Tatsächlich ruft CreateWindow einfach CreateWindowEx auf, wobei der dwExStyle-Parameter auf 0 festgelegt ist. Aus diesem Grund bezieht sich der Rest dieser Übersicht nur auf CreateWindowEx.

Dieser Abschnitt enthält die folgenden Themen:

Hinweis

Es gibt zusätzliche Funktionen zum Erstellen von speziellen Fenstern, z. B. Dialogfelder und Meldungsfelder. Weitere Informationen finden Sie unter DialogBox, CreateDialog und MessageBox.

 

Hauptfenstererstellung

Jede Windows-basierte Anwendung muss WinMain als Einstiegspunktfunktion haben. WinMain führt eine Reihe von Aufgaben aus, darunter das Registrieren der Fensterklasse für das Standard-Fenster und das Erstellen des Standard-Fensters. WinMain registriert die Standard-Fensterklasse durch Aufrufen der RegisterClass-Funktion und erstellt das Standard Fenster durch Aufrufen der CreateWindowEx-Funktion.

Ihre WinMain-Funktion kann Ihre Anwendung auch auf eine einzelne instance beschränken. Erstellen Sie einen benannten Mutex mithilfe der CreateMutex-Funktion . Wenn GetLastErrorERROR_ALREADY_EXISTS zurückgibt, ist eine andere instance Ihrer Anwendung vorhanden (der Mutex wurde erstellt), und Sie sollten WinMain beenden.

Das System zeigt das Standard Fenster nach dem Erstellen nicht automatisch an. Stattdessen muss eine Anwendung die ShowWindow-Funktion verwenden, um das Standard-Fenster anzuzeigen. Nach dem Erstellen des Standard-Fensters ruft die WinMain-Funktion der Anwendung ShowWindow auf und übergibt es zwei Parameter: ein Handle an das Standard-Fenster und ein Flag, das angibt, ob das Standard Fenster minimiert oder maximiert werden soll, wenn es zum ersten Mal angezeigt wird. Normalerweise kann das Flag auf eine der Konstanten festgelegt werden, die mit dem präfix SW_ beginnen. Wenn ShowWindow jedoch aufgerufen wird, um das Standard Fenster der Anwendung anzuzeigen, muss das Flag auf SW_SHOWDEFAULT festgelegt werden. Dieses Flag weist das System an, das Fenster entsprechend den Anweisungen des Programms anzuzeigen, das die Anwendung gestartet hat.

Wenn eine Fensterklasse bei der Unicode-Version von RegisterClass registriert wurde, empfängt das Fenster nur Unicode-Meldungen. Rufen Sie IsWindowUnicode auf, um zu bestimmen, ob ein Fenster den Unicode-Zeichensatz verwendet oder nicht.

Window-Creation Nachrichten

Beim Erstellen eines Fensters sendet das System Nachrichten an die Fensterprozedur für das Fenster. Das System sendet die WM_NCCREATE Nachricht nach dem Erstellen des Nichtclientbereichs des Fensters und der WM_CREATE Nachricht nach dem Erstellen des Clientbereichs. Die Fensterprozedur empfängt beide Nachrichten, bevor das System das Fenster anzeigt. Beide Nachrichten enthalten einen Zeiger auf eine CREATESTRUCT-Struktur , die alle in der CreateWindowEx-Funktion angegebenen Informationen enthält. In der Regel führt die Fensterprozedur Initialisierungsaufgaben aus, wenn diese Nachrichten empfangen werden.

Beim Erstellen eines untergeordneten Fensters sendet das System die WM_PARENTNOTIFY Nachricht an das übergeordnete Fenster, nachdem die WM_NCCREATE und WM_CREATE Nachrichten gesendet wurden. Außerdem werden beim Erstellen eines Fensters andere Nachrichten gesendet. Die Anzahl und Reihenfolge dieser Meldungen hängt von der Fensterklasse und -stil sowie von der Funktion ab, die zum Erstellen des Fensters verwendet wird. Diese Meldungen werden in anderen Themen in dieser Hilfedatei beschrieben.

Multithreadanwendungen

Eine Windows-basierte Anwendung kann über mehrere Ausführungsthreads verfügen, und jeder Thread kann Fenster erstellen. Der Thread, der ein Fenster erstellt, muss den Code für seine Fensterprozedur enthalten.

Eine Anwendung kann die EnumThreadWindows-Funktion verwenden, um die von einem bestimmten Thread erstellten Fenster aufzulisten. Diese Funktion übergibt das Handle wiederum an jedes Threadfenster an die anwendungsdefinierte Rückruffunktion EnumThreadWndProc.

Die GetWindowThreadProcessId-Funktion gibt den Bezeichner des Threads zurück, der ein bestimmtes Fenster erstellt hat.

Verwenden Sie die ShowWindowAsync-Funktion , um den Anzeigestatus eines fensters festzulegen, das von einem anderen Thread erstellt wurde.