Az alosztályozás a Windows által alapértelmezés szerint hozzárendelt ablakeljárás felülbírálásának folyamata
Ezt a technológiát akkor használják, ha az ablakot valamilyen speciális reakcióval kell felruházni egy Windows-üzenetre. Az alosztályozás segítségével megszervezheti a bemeneti vezérlést, blokkolva az ablak bezárását. Általában itt az a legfontosabb, hogy szükség esetén a programozó teljes mértékben irányíthassa az ablak viselkedését.
A Windows meglehetősen gazdag vezérlőválasztékkal rendelkezik, de előfordulhat, hogy olyan helyzetbe kerül, amikor testre kell szabnia egy vezérlő viselkedését. És van itt egy bonyodalom: a Windows által egy vezérlőhöz rendelt eljárás önmagában nem változtatható meg. Két módja van:
Az első megközelítés hátránya, hogy valójában a programozó kénytelen újra "feltalálni a kereket". Az alosztályozás előnye azonban, hogy lehetővé teszi a programozó számára, hogy csak azokra a Windows-üzenetekre összpontosítson, amelyekre valóban szüksége van, a többit pedig átadja a szokásos ablak eljárásnak.
Működési elve meglehetősen egyszerű: ablak létrehozásakor a Windows a WNDCLASSEX ablakosztály lpfnWndProc mezőjébe írja a kezelő eljárás [ 1] címét . A Windows biztosítja a programozó számára a SetWindowLong függvényt , amely megváltoztathatja az osztály különböző mezőit, beleértve a kezelő címét is. Ugyanakkor a szabványos ablak eljárás nem tűnik el sehol, a címét a defwindowproc mező tartalmazza , és ha ablakos eljárásunk olyan ablaküzenetet kap, amelynek feldolgozása nem igényel programozói beavatkozást, akkor az ablak eljárásunk továbbítja a szabványos ablakeljárás.
Problémák merülhetnek fel a technológia használata során, ha az alkalmazás VCL , OWL vagy MFC használatával van programozva . Ennek oka a Windows-üzenetek kezelési sorrendje ezekben a könyvtárakban [2] .