Principperne for funktion af brugergrænsefladen til operativsystemer i Windows-familien er baseret på konceptet med et vindue. Skrivebordet, proceslinjen, lister, dialoger, knapper, menuer er alle vinduer. Derfor skal du oprette et Windows-vindue for at få vist ethvert interface-element.
Nødvendig
- - kompilator;
- - Windows Platform SDK.
Instruktioner
Trin 1
Registrer klassen for det vindue, der skal oprettes, hvis det er nødvendigt. Foretag et opkald til API-funktionerne RegisterClass, RegisterClassEx eller brug den passende funktionalitet i den anvendte ramme.
RegisterClass- og RegisterClassEx-funktionerne accepterer markører til strukturer af henholdsvis type WNDCLASS og WNDCLASSEX som deres eneste parameter. Returneringsværdien af typen ATOM kan bruges i stedet for klassens navn, når du opretter et vindue. Hvis funktionsopkaldet mislykkes, er returværdien 0.
Instantier en struktur af typen WNDCLASS eller WNDCLASSEX. Udfyld alle nødvendige felter. Især skal de korrekte værdier placeres i:
- cbSize - strukturstørrelse i bytes;
- stil - et sæt stilarter til vinduesklassen;
- lpfnWndProc - markør til en vinduesprocedure;
- hInstance er håndtaget til det modul, hvor vinduesklassen er registreret;
- lpszClassName er klassens symbolske navn.
Resten af felterne kan skrives med NULL-værdier. Foretag et funktionsopkald for at registrere vinduesklassen. Kontroller det returnerede resultat.
Trin 2
Vælg om nødvendigt en eksisterende vinduesklasse. Du skal kende det symbolske klassenavn (det, der føres gennem lpszClassName-markøren, når du registrerer det) eller den tilsvarende ATOM-værdi. Klassen kan være lokal på applikationsniveau, global på applikationsniveau (registreret med CS_GLOBALCLASS-flag) eller systemklasse. Den sidste type inkluderer klasser af vinduer med navnene: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Klasser som RichEdit20W eller SysListView32 registreres, når de tilsvarende biblioteker er indlæst.
Trin 3
Opret et Windows-vindue. Brug API-funktionerne CreateWindow, CreateWindowEx eller de relevante indpakningsmetoder til klasseobjekter i den ramme eller det bibliotek, du bruger. Prototypen til CreateWindowEx-funktionen ser sådan ud:
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nBredde, int nHøjde, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
CreateWindow-funktionen adskiller sig kun fra CreateWindowEx i fravær af parameteren dwExStyle.
Ring til CreateWindow eller CreateWindowEx. Giv parameteren lpClassName navnet eller ATOM-værdien for den vinduesklasse, som du definerede i det første eller andet trin. Parametrene x, y, nBredde, nHøjde kan være koordinaterne og størrelserne på det vindue, der oprettes. Forældrevinduhåndtaget (hvis nogen) føres gennem hWndParent.
Gem og analyser den værdi, der returneres af CreateWindow eller CreateWindowEx. Efter succes returnerer de et håndtag til det nye vindue; ved fiasko, NULL.