Die Funktionsprinzipien der Benutzeroberfläche von Betriebssystemen der Windows-Familie basieren auf dem Konzept eines Fensters. Der Desktop, die Taskleiste, Listen, Dialoge, Schaltflächen, Menüs sind alle Fenster. Um ein Oberflächenelement anzuzeigen, müssen Sie daher ein Windows-Fenster erstellen.
Notwendig
- - Compiler;
- - Windows-Plattform-SDK.
Anweisungen
Schritt 1
Registrieren Sie bei Bedarf die Klasse des zu erstellenden Fensters. Rufen Sie die API-Funktionen RegisterClass, RegisterClassEx auf oder verwenden Sie die entsprechende Funktionalität des verwendeten Frameworks.
Die Funktionen RegisterClass und RegisterClassEx akzeptieren Zeiger auf Strukturen vom Typ WNDCLASS bzw. WNDCLASSEX als einzigen Parameter. Der Rückgabewert vom Typ ATOM kann beim Erstellen eines Fensters anstelle des Klassennamens verwendet werden. Wenn der Funktionsaufruf fehlschlägt, ist der Rückgabewert 0.
Instanziieren Sie eine Struktur vom Typ WNDCLASS oder WNDCLASSEX. Füllen Sie alle erforderlichen Felder aus. Insbesondere müssen die richtigen Werte eingetragen werden in:
- cbSize - Strukturgröße in Bytes;
- style - eine Reihe von Stilen für die Fensterklasse;
– lpfnWndProc – Zeiger auf eine Fensterprozedur;
- hInstance ist das Handle des Moduls, in dem die Fensterklasse registriert ist;
- lpszClassName ist der symbolische Name der Klasse.
Die restlichen Felder können mit NULL-Werten geschrieben werden. Führen Sie einen Funktionsaufruf durch, um die Fensterklasse zu registrieren. Überprüfen Sie das zurückgegebene Ergebnis.
Schritt 2
Wählen Sie bei Bedarf eine vorhandene Fensterklasse aus. Sie müssen den symbolischen Klassennamen (der beim Registrieren über den lpszClassName-Zeiger übergeben wurde) oder den entsprechenden ATOM-Wert kennen. Die Klasse kann auf Anwendungsebene lokal, auf Anwendungsebene global (mit dem Flag CS_GLOBALCLASS registriert) oder eine Systemklasse sein. Der letzte Typ umfasst Klassen von Fenstern mit den Namen: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Klassen wie RichEdit20W oder SysListView32 werden beim Laden der entsprechenden Bibliotheken registriert.
Schritt 3
Erstellen Sie ein Windows-Fenster. Verwenden Sie die API-Funktionen CreateWindow, CreateWindowEx oder die entsprechenden Wrapper-Methoden für Klassenobjekte des verwendeten Frameworks oder der Bibliothek. Der Prototyp für die CreateWindowEx-Funktion sieht so aus:
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nBreite, int nHeight, HWND hWndEltern, HMENU hMenü, HINWEIS hInstanz, LPVOID lpParam);
Die CreateWindow-Funktion unterscheidet sich von CreateWindowEx nur durch das Fehlen des dwExStyle-Parameters.
Rufen Sie CreateWindow oder CreateWindowEx auf. Übergeben Sie im Parameter lpClassName den Namen oder den ATOM-Wert der Fensterklasse, die Sie im ersten oder zweiten Schritt definiert haben. Die Parameter x, y, nWidth, nHeight können die Koordinaten und Größen des zu erstellenden Fensters sein. Das übergeordnete Fensterhandle (sofern vorhanden) wird über hWndParent übergeben.
Speichern und analysieren Sie den von CreateWindow oder CreateWindowEx zurückgegebenen Wert. Bei Erfolg geben sie ein Handle an das neue Fenster zurück, bei Misserfolg NULL.