Windows USER er et undersystem til styring af Windows og brugergrænsefladen til Windows -operativsystemet , en af de tre historisk første komponenter i dette operativsystem.
Den implementerer et vinduesobjekt (HWND), lister over vinduer, inklusive efter Z-rækkefølge, og styring af vinduesudklipningsområder, har et rigt sæt kald til oprettelse og styring af vinduer. Den implementerer også gengivelse af en standard vinduesramme (DefWindowProc) og flere standard brugergrænsefladeelementer (knapper, afkrydsningsfelter, radioknapper, rullepaneler, lister, kombinationsbokse og dialogbokse med børn indeni).
Når du opretter et vindue (to trin: RegisterClass+CreateWindow, når du bruger standard UI-elementer, er det første trin ikke nødvendigt), angives følgende: koordinater, streng (titel eller streng ved siden af knappen), stilflag og overordnet vindue. Kaldet til RegisterClass specificerer også en "vindueprocedure" (WNDPROC).
Størrelsen og Z-rækkefølgen af et allerede oprettet vindue styres af specielle opkald. Hvad angår kontrollen, der afhænger af vinduestypen (f.eks. spænding / nulstilling af et afkrydsningsfelt eller tilføjelse af linjer til listen) - udføres det ved at ringe til SendMessage, hvor 2 meddelelseskoder er angivet (f.eks. WM_COMMAND+LB_ADDSTRING ) og en parameter.
WNDPROC er en funktion implementeret i applikationen, som USER kalder, når forskellige hændelser opstår i vinduets levetid (for standard UI-elementer er funktionen implementeret i USER selv eller i DLL'en, hvor objektet er implementeret, såsom COMCTL32.DLL ). WNDPROC er bestået HWND, meddelelseskode ( WM_xxx) og 2 parametre.
Det er WNDPROC-udviklerens ansvar at springe over eventuelle meddelelseskoder, der ikke er kendt for ham i DefWindowProc.
Hovedbudskaber:
BRUGER anvender aktivt den såkaldte. ressourcer er skrivebeskyttede data, der er indlejret i en EXE/DLL-fil på en særlig måde på konstruktionsstadiet.
Ressourcer i sig selv er ikke en del af USER og kan bruges uden det (f.eks. strengtabel - tabeller med strenge til lokalisering af en applikation til forskellige sprog), men nogle typer ressourcer bruges automatisk af USER (f.eks. beskrivelser af menuer og dialogbokse, der f.eks. viser alle interne kontroller i denne dialogboks og deres koordinater og linjer).
Når man udvikler et program, placeres ressourcer i en tekstfil med suffikset .rc, skrevet i et simpelt sprog. Samtidig var der for lang tid siden værktøjer til visuel redigering af beskrivelser af dialoger og menuer.
Når du bygger et program, kompilerer RC.EXE-kompileren .rc til en binær .res-fil, som derefter sys ind i en EXE/DLL-fil af LINK-programmet.
Når du opretter et vindue, kan du angive grebet på den ressource, hvor beskrivelsen af vinduets øverste menu er placeret - og BRUGER vil oprette og tegne menuen automatisk, og sende WM_COMMAND med koden for menupunktet til vinduet, når elementet er valgt.
Den mest populære C++-indpakning omkring USER har været MFC i lang tid og er stadig i brug i dag. WTL- indpakningen er også populær .
Hele USER-teknologien, der er omkring 25 år gammel, erstattes gradvist af Windows Presentation Foundation ( WPF ), hvor f.eks. ressourcesproget er blevet erstattet af et meget rigere XAML , og ethvert vektorgrafikelement eller endda en vindue kan være et objekt, der kan modtage begivenheder med en film vist gennem DirectShow .
win32k.sys (lavere niveauer, inklusive lister over vinduer og deres klippeområder) og user32.dll (applikationstilgængelige opkald, DefWindowProc og standardelementer).
Ifølge nogle påstande (fra dem, der har set den ulovlige kildekode), er BRUGERkildekoden skrevet i en monstrøs stil og indeholder mindre redigeringer for at understøtte specifikke applikationer såsom PowerPoint .
På samme måde er denne kode aldrig blevet omskrevet igen i 25 år, og måske er dette en urealistisk opgave med hensyn til at opretholde applikationskompatibilitet.
Derudover er der hensyn, som ikke kræver oplysninger fra ulovlig kode.
Brug af WNDPROC med en switch-sætning for alle meddelelseskoder ser ekstremt grimt ud (dette problem er løst i alle C++-indpakninger).
Der er et koncept om en klient og et ikke-klient område i et vindue - indersiden af vinduet og rammen (normalt standard). Dette resulterer i to sæt meddelelseskoder for indersiden og rammen - gengivelse, tastatur, mus osv. Derudover er der ingen arkitektonisk adskillelse af rammen og indersiden, hvilket gør det vanskeligt at implementere MVC- arkitektoniske principper .
Problemet er dog allerede løst i MFC: Der oprettes et separat indre vindue, som automatisk flytter sig, når rammen flyttes, og hvori alt, som applikationen vil tegne, tegnes. Vinduet-indvendigt kaldes view, og i denne arkitektur er MVC allerede let at implementere. En sådan visning kan f.eks. genbruges ved hjælp af OLE-teknologi i et indlejret dokument.
Ungarsk notation blev først brugt i USER - opfinderen af notationen, Charles Simonyi, var hovedudvikleren af denne komponent.
De øverste niveauer af X11 -teknologi, der bruges i UNIX-lignende operativsystemer såsom Linux , såvel som de lavere niveauer af KDE- og Gnome-teknologier (i de samme operativsystemer).