Principerna för att använda användargränssnittet för operativsystem i Windows-familjen bygger på konceptet med ett fönster. Skrivbordet, aktivitetsfältet, listor, dialoger, knappar, menyer är alla fönster. För att visa något gränssnittselement måste du faktiskt skapa ett Windows-fönster.
Nödvändig
- - kompilator;
- - Windows Platform SDK.
Instruktioner
Steg 1
Registrera klassen för fönstret som ska skapas, om det behövs. Ringa ett samtal till API-funktionerna RegisterClass, RegisterClassEx eller använd lämplig funktionalitet för det ramverk som används.
Funktionerna RegisterClass och RegisterClassEx accepterar pekare till strukturer av typen WNDCLASS respektive WNDCLASSEX som enda parameter. Returvärdet av typen ATOM kan användas istället för klassnamnet när du skapar ett fönster. Om funktionsanropet misslyckas är returvärdet 0.
Instantiera en struktur av typen WNDCLASS eller WNDCLASSEX. Fyll i alla nödvändiga fält. I synnerhet måste rätt värden placeras i:
- cbSize - strukturstorlek i byte;
- stil - en uppsättning stilar för fönsterklassen;
- lpfnWndProc - pekare till ett fönsterprocedur;
- hInstance är handtaget för den modul där fönsterklassen är registrerad;
- lpszClassName är klassens symboliska namn.
Resten av fälten kan skrivas med NULL-värden. Ringa ett funktionsanrop för att registrera fönsterklassen. Kontrollera det returnerade resultatet.
Steg 2
Välj en befintlig fönsterklass om det behövs. Du måste känna till det symboliska klassnamnet (det som passeras genom pekaren lpszClassName när du registrerar det) eller motsvarande ATOM-värde. Klassen kan vara lokal på applikationsnivå, global på applikationsnivå (registrerad med CS_GLOBALCLASS-flaggan) eller systemklass. Den sista typen innehåller klasser av fönster med namnen: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Klasser som RichEdit20W eller SysListView32 registreras när motsvarande bibliotek laddas.
Steg 3
Skapa ett Windows-fönster. Använd API-funktionerna CreateWindow, CreateWindowEx eller lämpliga omslagsmetoder för klassobjekt i ramverket eller biblioteket du använder. Prototypen för CreateWindowEx-funktionen ser ut så här:
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHöjd, HWND hWndParent, HMENU hMeny, HINSTANCE hInstance, LPVOID lpParam);
CreateWindow-funktionen skiljer sig från CreateWindowEx endast i avsaknad av parametern dwExStyle.
Ring CreateWindow eller CreateWindowEx. Skicka i parametern lpClassName namnet eller ATOM-värdet för den fönsterklass som du definierade i det första eller andra steget. Parametrarna x, y, nBredd, nHöjd kan vara koordinater och storlekar för det fönster som skapas. Det överordnade fönsterhandtaget (om det finns) skickas genom hWndParent.
Spara och analysera värdet som returneras av CreateWindow eller CreateWindowEx. Efter framgång kommer de att returnera ett handtag till det nya fönstret; vid misslyckande, NULL.