Underklassificering er processen tilsidesætte en vinduesprocedure, som Windows tildeler som standard.
Denne teknologi bruges, hvis det er nødvendigt for at give vinduet en specifik reaktion på en Windows-meddelelse. Ved hjælp af underklassificering kan du organisere inputkontrol og blokere lukningen af vinduet. Generelt er det vigtigste her, at programmøren om nødvendigt har fuld kontrol over vinduets opførsel.
Windows har et ret rigt udvalg af kontroller, men du kan komme i en situation, hvor du skal tilpasse en kontrols adfærd. Og der er en komplikation her: den procedure, som Windows tildeler en kontrol, kan ikke i sig selv ændres. Der er to måder:
Ulemperne ved den første tilgang er, at programmøren faktisk er tvunget til at "genopfinde hjulet" igen. Fordelen ved underklassificering er imidlertid, at det giver programmøren mulighed for kun at fokusere på de Windows-meddelelser, han virkelig har brug for, og videregive resten til standardvindueproceduren.
Princippet for dets drift er ret simpelt: Når du opretter et vindue, skriver Windows adressen på behandlerproceduren [1] i feltet lpfnWndProc i vinduesklassen WNDCLASSEX . Windows giver programmøren SetWindowLong- funktionen , som kan ændre forskellige felter i klassen, inklusive adressen på behandleren. Samtidig forsvinder standardvindueproceduren ikke nogen steder, dens adresse er indeholdt i defwindowproc- feltet , og hvis vores vinduesprocedure modtager en vinduesmeddelelse, der ikke kræver programmørintervention for dens behandling, så sender vores vinduesprocedure den til standard vinduesprocedure.
Problemer ved brug af denne teknologi vil opstå, hvis applikationen er programmeret ved hjælp af VCL , OWL eller MFC . Dette skyldes den rækkefølge, som Windows-meddelelser håndteres i i disse biblioteker [2] .