Globale underklasse

Globalt underklasse en vindusklasse, må programmet ha et håndtak til et vindu av klassen. Programmet trenger også håndtaket for å fjerne underklassen. For å få håndtaket, oppretter et program vanligvis et skjult vindu av klassen å være en underklasse. Etter å håndtaket, kaller programmet funksjonen SetClassLong , som å angi håndtaket, GCL_WNDPROC-flagg, og adressen til prosedyren underklasse. SetClassLong returnerer adressen til den opprinnelige vindusprosedyre for klassen.

Det opprinnelige vinduet prosedyreadresse brukes i globale underklasse på samme måte som det er brukt i forekomst i underklasse. Underklasse fremgangsmåten sender meldinger til den opprinnelige vindusprosedyre ved å kalle CallWindowProc. Programmet fjerner underklassen fra vindusklasse ved å kalle SetClassLong på nytt, angir du adressen til den opprinnelige vindusprosedyre, GCL_WNDPROC-flagg og håndtaket til et vindu av klassen å være en underklasse. Et program som er at globalt underklasser en Kontrollklasse må fjerne underklassen når programmet avsluttes; Hvis ikke, det kan oppstå en uopprettelig systemfeil.

Globale underklasse har de samme begrensningene som forekomst i underklasse, pluss noen ekstra begrensninger. Et program bør ikke bruke ekstra byte for klassen eller vinduet-forekomst uten å vite nøyaktig hvordan den opprinnelige vindusprosedyre bruker dem. Hvis programmet må knytte data til et vindu, bør det bruke vinduet Egenskaper.

Index