Alaluokka on prosessi ohitetaan Windowsin oletusarvoisesti määrittämä ikkunatoiminto .
Tätä tekniikkaa käytetään, jos sen on annettava ikkunalle tietty reaktio Windows-viestiin. Alaluokituksen avulla voit järjestää syötteiden ohjauksen, joka estää ikkunan sulkeutumisen. Yleisesti ottaen tärkeintä tässä on, että ohjelmoijalla on tarvittaessa täysi määräysvalta ikkunan käyttäytymisestä.
Windowsissa on melko rikas valikoima säätimiä, mutta saatat joutua tilanteeseen, jossa sinun on mukautettava säätimen toimintaa. Ja tässä on monimutkaisuus: Windowsin ohjausobjektille määräämää menettelyä ei voida muuttaa sellaisenaan. On kaksi tapaa:
Ensimmäisen lähestymistavan haitat ovat, että ohjelmoijan on itse asiassa pakko "keksiä pyörä uudelleen". Alaluokituksen etuna on kuitenkin se, että sen avulla ohjelmoija voi keskittyä vain niihin Windows-viesteihin, joita hän todella tarvitsee, ja siirtää loput tavalliseen ikkunamenettelyyn.
Sen toimintaperiaate on melko yksinkertainen: ikkunaa luodessaan Windows kirjoittaa käsittelijän proseduurin [1] osoitteen WNDCLASSEX - ikkunaluokan lpfnWndProc -kenttään . Windows tarjoaa ohjelmoijalle SetWindowLong -funktion , joka voi muuttaa luokan eri kenttiä, mukaan lukien käsittelijän osoitteen. Samalla tavallinen ikkunaproseduuri ei katoa minnekään, sen osoite on defwindowproc- kentässä ja jos ikkunaproseduurimme saa ikkunasanoman, joka ei vaadi ohjelmoijan väliintuloa sen käsittelyyn, ikkunaproseduurimme välittää sen tavallinen ikkunamenettely.
Tämän tekniikan käytössä ilmenee ongelmia, jos sovellus ohjelmoidaan VCL :llä , OWL :llä tai MFC :llä . Tämä johtuu järjestyksestä, jossa Windows-viestejä käsitellään näissä kirjastoissa [2] .