Podtřída

Subclassing je proces  přepsání procedury okna kterou Windows přiřadí ve výchozím nastavení.

Účel technologie

Tato technologie se používá, pokud je požadováno vybavit okno nějakou specifickou reakcí na zprávu Windows. Pomocí podtříd můžete organizovat ovládání vstupu a blokovat zavření okna. Obecně je zde nejdůležitější, že v případě potřeby má programátor plnou kontrolu nad chováním okna.

Výhody podtřídy

Windows má poměrně bohatý výběr ovládacích prvků, ale můžete se dostat do situace, kdy si budete muset chování ovládacího prvku přizpůsobit. A je zde komplikace: postup, který Windows přiřadí ovládacímu prvku, nelze sám o sobě změnit. Existují dva způsoby:

Nevýhody prvního přístupu spočívají v tom, že ve skutečnosti je programátor nucen znovu „objevit kolo“. Výhodou podtřídění však je, že umožňuje programátorovi soustředit se pouze na zprávy Windows, které skutečně potřebuje, a zbytek předat standardní proceduře okna.

Jak funguje podtřídění

Princip jeho fungování je vcelku jednoduchý: Windows při vytváření okna zapíše adresu procedury handleru [1] do pole lpfnWndProc třídy okna WNDCLASSEX . Windows poskytuje programátorovi funkci SetWindowLong , která může měnit různá pole třídy, včetně adresy handleru. Standardní okenní procedura přitom nikde nezmizí, její adresa je obsažena v poli defwindowproc , a pokud naše okenní procedura obdrží okenní zprávu, která pro své zpracování nevyžaduje zásah programátora, pak ji naše okenní procedura předá standardní postup okna.

Omezení podtřídy

Problémy při používání této technologie nastanou, pokud je aplikace naprogramována pomocí VCL , OWL nebo MFC . To je způsobeno pořadím, ve kterém jsou zprávy Windows zpracovány v těchto knihovnách [2] .

Viz také

Poznámky

  1. Všimněte si, že třída okna NENÍ třídou ve smyslu OOP.
  2. Metody zpráv nebo zpracování zpráv podle tříd . Datum přístupu: 27. července 2010. Archivováno z originálu 15. prosince 2010.

Odkazy