MFC – ovládací prvky ActiveX
Ovládací prvek technologie ActiveX je opakovaně použitelná softwarová komponenta založená na modelu COM (Component Object Model), která podporuje širokou škálu funkcí OLE a lze ji přizpůsobit tak, aby vyhovovala mnoha softwarovým potřebám.
Důležité
technologie ActiveX je starší technologie, která by se neměla používat pro nový vývoj. Další informace naleznete v tématu technologie ActiveX Ovládací prvky.
Ovládací prvky ActiveX jsou navrženy pro použití v běžných kontejnerech ovládacího prvku ActiveX a v Internetu na webových stránkách. Ovládací prvky technologie ActiveX můžete vytvořit pomocí knihovny MFC, které jsou zde popsány, nebo pomocí knihovny ATL (Active Template Library).
Ovládací prvek ActiveX se dokáže vykreslit do vlastního okna, reagovat na události (například kliknutí myší) a lze jej spravovat pomocí rozhraní zahrnujícího vlastnosti a metody podobné těm, které obsahují automatizační objekty.
Tyto ovládací prvky lze vyvíjet pro mnoho účelů, jako je například přístup do databáze, monitorování dat nebo vykreslování do grafu. Kromě jejich přenositelnosti podporují ovládací prvky ActiveX funkce, které byly prvkům ActiveX dříve nedostupné, například kompatibilitu s existujícími kontejnery OLE a schopnost integrovat své nabídky do nabídek těchto kontejnerů. Ovládací prvky ActiveX plně podporují automatizaci, která umožňuje prvku vystavit vlastnosti pro čtení a zápis a sadu metod, které lze volat jeho uživatelem.
Lze vytvořit ovládací prvky ActiveX bez oken či prvky, které po své aktivaci okno pouze vytvoří. Ovládací prvky bez okna urychlují zobrazení aplikace a umožňují existenci průhledných a neobdélníkových prvků. Vlastnosti ovládacího prvku ActiveX lze načíst také asynchronně.
Ovládací prvek ActiveX je implementován jako server uvnitř procesu (obvykle malý objekt), který lze použít v libovolném kontejneru OLE. Povšimněte si, že všechny funkce ovládacího prvku ActiveX jsou dostupné pouze v případě, že je použit uvnitř kontejneru OLE navrženého pro komunikaci s prvky ActiveX. Seznam kontejnerů, které podporují ovládací prvky technologie ActiveX, najdete v části Ovládací prvky port technologie ActiveX do jiných aplikací. Tento typ kontejneru, dále jen „kontejner ovládacího prvku“, dokáže pracovat s ovládacím prvkem ActiveX pomocí jeho vlastností a metod a přijímá od něj oznámení ve formě událostí. Následující obrázek znázorňuje tuto interakci.
Interakce mezi kontejnerem ovládacího prvku ActiveX a ovládacím prvkem ActiveX v okně
Některé nedávné informace o optimalizaci ovládacích prvků technologie ActiveX naleznete v tématu MFC technologie ActiveX Ovládací prvky: Optimalizace.
Pokud chcete vytvořit technologie ActiveX ovládací prvek MFC, přečtěte si téma Vytvoření technologie ActiveX řídicího projektu.
Další informace naleznete v tématu:
Základní součásti ovládacího prvku technologie ActiveX
Ovládací prvek ActiveX používá několik programových prvků, kterými efektivně komunikuje s kontejnerem ovládacího prvku a s uživatelem. Jedná se o třídu COleControl, sadu funkcí pro aktivaci událostí a mapu dispatch.
Každý vyvinutý objekt ovládacího prvku ActiveX dědí výkonnou sadu funkcí ze své základní třídy knihovny MFC, třídy COleControl
. Mezi tyto funkce patří aktivace na místě a automatizační logika. Třída COleControl
může objektu ovládacího prvku poskytnout stejné funkce jako objekt okna MFC a navíc schopnost vyvolat události. COleControl
může také poskytovat ovládací prvky bez oken, které spoléhají na jejich kontejner pro pomoc s některými funkcemi, které okno poskytuje (zachycení myši, fokus klávesnice, posouvání), ale nabízí mnohem rychlejší zobrazení.
Jelikož třída ovládacího prvku je odvozena z třídy COleControl
, dědí schopnost posílat (tzv. „vyvolat“) kontejneru ovládacího prvku zprávy (tzv. události) v případě, že jsou splněny určité podmínky. Tyto události se používají pro oznámení kontejneru ovládacího prvku, že se v ovládacím prvku stalo něco důležitého. Přidáním parametrů k události lze kontejneru ovládacího prvku zaslat dodatečné informace o události. Další informace o událostech ovládacích prvků technologie ActiveX naleznete v článku MFC technologie ActiveX ovládací prvky: Události.
Posledním prvkem je mapa odeslání, která se používá k vystavení sady funkcí (zvaných metody) a atributů (zvaných vlastnosti) uživateli ovládacího prvku. Vlastnosti umožňují kontejneru ovládacího prvku nebo uživateli manipulovat s prvkem různými způsoby. Uživatel může změnit vzhled ovládacího prvku, změnit určité jeho hodnoty nebo vznést na prvek požadavky, například na přístup k určitým datům, které ovládací prvek udržuje. Toto rozhraní určuje vývojář ovládacího prvku a je definováno pomocí zobrazení třídy. Další informace o technologie ActiveX ovládacích metod a vlastností naleznete v článcích MFC technologie ActiveX Ovládací prvky: Metody a vlastnosti.
Interakce mezi ovládacími prvky s Windows a kontejnery ovládacích prvků technologie ActiveX
Je-li ovládací prvek použit uvnitř kontejneru ovládacího prvku, používá pro komunikaci dva mechanismy: vystavuje vlastnosti a metody a vyvolává události. Následující obrázek ukazuje, jak jsou tyto dva mechanismy implementovány.
Komunikace mezi kontejnerem ovládacího prvku ActiveX a prvkem samotným
Předchozí obrázek znázorňuje také způsob, jakým ovládací prvek zpracovává jiná rozhraní OLE (kromě automatizace a událostí).
Veškerou komunikaci ovládacího prvku s kontejnerem zajišťuje třída COleControl
. Aby bylo možné zpracovat některé požadavky kontejneru, COleControl
bude volat členské funkce implementované ve třídě řízení. Tímto způsobem jsou zpracovány všechny metody a některé vlastnosti. Třída ovládacího prvku může také započít komunikaci s kontejnerem zavoláním členských funkcí třídy COleControl
. Tímto způsobem jsou vyvolávány události.
Aktivní a neaktivní stavy ovládacího prvku technologie ActiveX
Ovládací prvek má dva základní stavy: aktivní a neaktivní. Dříve bylo zvykem, že tyto stavy byly rozlišeny skutečností, zda ovládací prvek má okno. Aktivní ovládací prvek okno měl, neaktivní nikoli. Se zavedením aktivace bez oken není již toto rozlišení univerzální, ale pro mnoho ovládacích prvků je stále platné.
Když se ovládací prvek bez oken aktivuje, vyvolá zachycení myši, fokus klávesnice, posouvání a další služby oken z jeho kontejneru. Můžete také zajistit interakci myší s neaktivními ovládacími prvky a také vytvářet ovládací prvky, které čekají, až se aktivuje, aby se vytvořilo okno.
Ovládací prvek s oknem je po své aktivaci schopen plně spolupracovat s kontejnerem ovládacího prvku, uživatelem a systémem Windows. Obrázek níže ukazuje komunikační kanály mezi ovládacím prvkem ActiveX, kontejnerem ovládacího prvku a operačním systémem.
Zpracování zpráv systému Windows v ovládacím prvku ActiveX s oknem (je-li aktivní)
Serializace
Schopnost serializovat data, někdy označovaná také jako trvalost, umožňuje ovládacímu prvku zapisovat hodnoty svých vlastností do trvalého úložiště. Ovládací prvky lze znovu vytvořit přečtením stavu objektu z úložiště.
Ovládací prvek není odpovědný za získání přístupu k paměťovému médiu. Namísto toho je kontejner ovládacího prvku odpovědný za poskytnutí paměťových médií ovládacímu prvku ve vhodných chvílích. Další informace o serializaci naleznete v článku MFC technologie ActiveX ovládací prvky: Serializace. Informace o optimalizaci serializace naleznete v tématu Optimalizace trvalosti a inicializace v ovládacích prvcích technologie ActiveX: Optimalizace.
Instalace tříd a nástrojů ovládacích prvků technologie ActiveX
Po instalaci jazyka Visual C++ jsou třídy ovládacích prvků ActiveX knihovny MFC a konečné a ladicí DLL knihovny runtime ovládacích prvků ActiveX automaticky nainstalovány, pokud byly v instalačním programu zvoleny Ovládací prvky ActiveX (ve výchozím nastavení zvoleny jsou).
Ve výchozím nastavení jsou třídy a nástroje ovládacích prvků technologie ActiveX nainstalovány v následujících podadresářích v části \Program Files\Microsoft Visual Studio .NET:
\Common7\Tools
Obsahuje soubory testovacího kontejneru (TstCon32.exe a jeho soubory nápovědy)
\Vc7\atlmfc\include
Obsahuje vložené soubory potřebné k vývoji ovládacích prvků ActiveX pomocí knihovny MFC
\Vc7\atlmfc\src\mfc
Obsahuje zdrojové kódy určitých tříd ovládacích prvků ActiveX v knihovně MFC
\Vc7\atlmfc\lib
Obsahuje knihovny potřebné k vývoji ovládacích prvků ActiveX pomocí knihovny MFC
Obsahuje také ukázky ovládacích prvků ActiveX knihovny MFC. Další informace o těchto ukázkách naleznete v tématu Ukázky ovládacích prvků: mfc-based technologie ActiveX Controls