Kontrolki ActiveX MFC
Kontrolka ActiveX to składnik oprogramowania wielokrotnego użytku oparty na modelu obiektów składników (COM), który obsługuje szeroką gamę funkcji OLE i może być dostosowany do wielu potrzeb oprogramowania.
Ważne
ActiveX to starsza technologia, która nie powinna być używana do tworzenia nowych rozwiązań. Aby uzyskać więcej informacji, zobacz Kontrolki ActiveX.
Kontrolki ActiveX są przeznaczone do używania zarówno w zwykłych kontenerach kontrolek ActiveX, jak i w Internecie na stronach sieci Web. Kontrolki ActiveX można utworzyć za pomocą MFC, opisanej tutaj lub biblioteki active template library (ATL).
Kontrolka ActiveX może rysować się we własnym oknie, reagować na zdarzenia (takie jak kliknięcia myszy) i zarządzać za pomocą interfejsu, który zawiera właściwości i metody podobne do tych w obiektach automatyzacji.
Te kontrolki można opracowywać w wielu zastosowaniach, takich jak dostęp do bazy danych, monitorowanie danych lub grafowanie. Oprócz przenośności kontrolki ActiveX obsługują funkcje, które wcześniej nie były dostępne dla kontrolek ActiveX, takie jak zgodność z istniejącymi kontenerami OLE i możliwość integracji menu z menu kontenerów OLE. Ponadto kontrolka ActiveX w pełni obsługuje usługę Automation, która umożliwia kontrolce uwidocznienie właściwości odczytu/zapisu oraz zestaw metod, które mogą być wywoływane przez użytkownika sterującego.
Kontrolki i kontrolki ActiveX bez okien można tworzyć tylko wtedy, gdy staną się aktywne. Kontrolki bez okien przyspieszają wyświetlanie aplikacji i umożliwiają wyświetlanie przezroczystych i nierectangularnych kontrolek. Właściwości kontrolek ActiveX można również załadować asynchronicznie.
Kontrolka ActiveX jest implementowana jako serwer przetwarzania (zazwyczaj mały obiekt), który może być używany w dowolnym kontenerze OLE. Należy pamiętać, że pełna funkcjonalność kontrolki ActiveX jest dostępna tylko wtedy, gdy jest używana w kontenerze OLE, który ma być świadomy kontrolek ActiveX. Zobacz Port ActiveX Controls to Other Applications (Przenoszenie kontrolek ActiveX do innych aplikacji ), aby uzyskać listę kontenerów obsługujących kontrolki ActiveX. Ten typ kontenera, nazywany dalej "kontenerem sterowania", może obsługiwać kontrolkę ActiveX przy użyciu właściwości i metod kontrolki oraz odbierać powiadomienia z kontrolki ActiveX w postaci zdarzeń. Na poniższej ilustracji przedstawiono tę interakcję.
Interakcja między kontenerem kontrolek ActiveX a oknem kontrolki ActiveX
Aby uzyskać najnowsze informacje na temat optymalizowania kontrolek ActiveX, zobacz MFC ActiveX Controls: Optimization (Kontrolki ActiveX MFC: optymalizacja).
Aby utworzyć kontrolkę ActiveX MFC, zobacz Tworzenie projektu kontrolki ActiveX.
Aby uzyskać więcej informacji, zobacz:
Podstawowe składniki kontrolki ActiveX
Kontrolka ActiveX używa kilku elementów programistycznych do wydajnej interakcji z kontenerem sterowania i z użytkownikiem. Są to klasa COleControl, zestaw funkcji wyzwalania zdarzeń i mapa wysyłania.
Każdy obiekt kontrolki ActiveX, który opracowujesz, dziedziczy zaawansowany zestaw funkcji z klasy bazowej MFC. COleControl
Te funkcje obejmują aktywację w miejscu i logikę automatyzacji. COleControl
program może zapewnić obiekt kontrolny z taką samą funkcjonalnością jak obiekt okna MFC oraz możliwość uruchamiania zdarzeń. COleControl
może również udostępniać kontrolki bez okien, które polegają na kontenerze, aby uzyskać pomoc dotyczącą niektórych funkcji zapewnianych przez okno (przechwytywanie myszy, fokus klawiatury, przewijanie), ale oferuje znacznie szybsze wyświetlanie.
Ponieważ klasa sterowania pochodzi z COleControl
klasy , dziedziczy możliwość wysyłania lub "wyzwalania" komunikatów, nazywanych zdarzeniami, do kontenera sterowania po spełnieniu określonych warunków. Te zdarzenia są używane do powiadamiania kontenera sterowania, gdy coś ważnego dzieje się w kontrolce. Dodatkowe informacje o zdarzeniu można wysłać do kontenera sterowania, dołączając parametry do zdarzenia. Aby uzyskać więcej informacji na temat zdarzeń kontrolek ActiveX, zobacz artykuł MFC ActiveX Controls: Events (Kontrolki ActiveX MFC: zdarzenia).
Ostatnim elementem jest mapa wysyłania, która służy do uwidaczniania zestawu funkcji (nazywanych metodami) i atrybutów (nazywanych właściwościami) użytkownikowi sterującemu. Właściwości umożliwiają kontenerowi sterowania lub użytkownikowi kontrolki manipulowanie kontrolką na różne sposoby. Użytkownik może zmienić wygląd kontrolki, zmienić niektóre wartości kontrolki lub wysyłać żądania kontroli, takie jak uzyskiwanie dostępu do określonego elementu danych, które utrzymuje kontrolka. Ten interfejs jest określany przez dewelopera kontrolek i jest definiowany przy użyciu widoku klasy. Aby uzyskać więcej informacji na temat metod i właściwości kontrolek ActiveX ActiveX, zobacz artykuły MFC ActiveX Controls: Methods and Properties (Kontrolki ActiveX MFC: metody i właściwości).
Interakcja między kontrolkami z kontenerami kontrolek Windows i ActiveX
Gdy kontrolka jest używana w kontenerze sterującym, używa dwóch mechanizmów do komunikowania się: uwidacznia właściwości i metody oraz wyzwala zdarzenia. Na poniższej ilustracji przedstawiono sposób implementacji tych dwóch mechanizmów.
Komunikacja między kontenerem kontrolek ActiveX i kontrolką ActiveX
Na poprzedniej ilustracji pokazano również, jak inne interfejsy OLE (oprócz automatyzacji i zdarzeń) są obsługiwane przez kontrolki.
Cała komunikacja kontrolki z kontenerem jest wykonywana przez COleControl
program . Aby obsłużyć niektóre żądania kontenera, COleControl
wywoła funkcje składowe implementowane w klasie sterowania. Wszystkie metody i niektóre właściwości są obsługiwane w ten sposób. Klasa kontrolki może również zainicjować komunikację z kontenerem, wywołując funkcje składowe klasy COleControl
. Zdarzenia są wyzwalane w ten sposób.
Aktywne i nieaktywne stany kontrolki ActiveX
Kontrolka ma dwa podstawowe stany: aktywne i nieaktywne. Tradycyjnie te stany były rozróżniane przez to, czy kontrolka miała okno. Aktywna kontrolka miała okno; nieaktywna kontrolka nie. Wraz z wprowadzeniem aktywacji bez okien rozróżnienie to nie jest już uniwersalne, ale nadal ma zastosowanie do wielu kontrolek.
Gdy kontrolka bez okna jest aktywna, wywołuje przechwytywanie myszy, fokus klawiatury, przewijanie i inne usługi okien z kontenera. Możesz również zapewnić interakcję myszy z nieaktywną kontrolką, a także tworzyć kontrolki, które oczekują na aktywowanie w celu utworzenia okna.
Gdy kontrolka z oknem stanie się aktywna, może w pełni współdziałać z kontenerem sterowania, użytkownikiem i systemem Windows. Na poniższej ilustracji przedstawiono ścieżki komunikacji między kontrolką ActiveX, kontenerem sterowania i systemem operacyjnym.
Przetwarzanie komunikatów systemu Windows w kontrolce ActiveX w oknie (gdy jest aktywny)
Serializacja
Możliwość serializacji danych, czasami określanych jako trwałość, umożliwia kontrolce zapisywanie wartości jej właściwości w magazynie trwałym. Kontrolki można następnie odtworzyć, odczytując stan obiektu z magazynu.
Należy pamiętać, że kontrolka nie jest odpowiedzialna za uzyskanie dostępu do nośnika magazynu. Zamiast tego kontener kontrolki jest odpowiedzialny za zapewnienie kontrolki nośnika magazynu do użycia w odpowiednim czasie. Aby uzyskać więcej informacji na temat serializacji, zobacz artykuł MFC ActiveX Controls: Serializing (Kontrolki ActiveX MFC: serializowanie). Aby uzyskać informacje na temat optymalizowania serializacji, zobacz Optymalizowanie trwałości i inicjowania w kontrolkach ActiveX: Optymalizacja.
Instalowanie klas kontrolek ActiveX i narzędzi
Podczas instalowania języka Visual C++klasy kontrolek ActiveX MFC oraz biblioteki DLL środowiska uruchomieniowego kontrolek ActiveX debugowania i debugowania są instalowane automatycznie, jeśli w Instalatorze są wybierane kontrolki ActiveX (są one domyślnie zaznaczone).
Domyślnie klasy kontrolek ActiveX i narzędzia są instalowane w następujących podkatalogach w folderze \Program Files\Microsoft Visual Studio .NET:
\Common7\Tools
Zawiera pliki kontenera testów (TstCon32.exe, a także pliki Pomocy).
\Vc7\atlmfc\include
Zawiera pliki dołączane potrzebne do opracowywania kontrolek ActiveX za pomocą MFC
\Vc7\atlmfc\src\mfc
Zawiera kod źródłowy dla określonych klas kontrolek ActiveX w MFC
\Vc7\atlmfc\lib
Zawiera biblioteki wymagane do opracowywania kontrolek ActiveX za pomocą MFC
Istnieją również przykłady dla kontrolek ActiveX MFC. Aby uzyskać więcej informacji na temat tych przykładów, zobacz Controls Samples: MFC-Based ActiveX Controls (Przykłady kontrolek: kontrolki ActiveX oparte na MFC)