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 ActiveX Controls.

kontrolki ActiveX są przeznaczone do użytku zarówno w zwykłych ActiveX kontenerach sterowania, jak i w Internecie na stronach sieci Web. Kontrolki ActiveX można utworzyć za pomocą MFC, opisanego 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 usługi Automation.

Te kontrolki można opracowywać w wielu zastosowaniach, takich jak dostęp do bazy danych, monitorowanie danych lub grafu. Oprócz przenośności kontrolki ActiveX obsługują funkcje, które wcześniej nie były dostępne do ActiveX kontrolek, 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 i zapisu oraz zestaw metod, które mogą być wywoływane przez użytkownika sterującego.

Możesz utworzyć ActiveX kontrolki i kontrolki bez okien bez okien, które tworzą okno tylko wtedy, gdy staną się aktywne. Kontrolki bez okien przyspieszają wyświetlanie aplikacji i umożliwiają wyświetlanie przezroczystych i nieznakularnych kontrolek. Można również ładować właściwości kontrolki ActiveX 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 zaprojektowanym do obsługi kontrolek ActiveX. Zobacz Kontrolki ActiveX portów do innych aplikacji, aby uzyskać listę kontenerów, które obsługują 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ę.

Interplay of ActiveX control container and control.
Interakcja między kontenerem kontrolki ActiveX a kontrolką ActiveX okiennej

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 sterowania ActiveX.

Aby uzyskać więcej informacji, zobacz:

Podstawowe składniki kontrolki ActiveX

Kontrolka ActiveX używa kilku elementów programowych do wydajnej interakcji z kontenerem sterowania i z użytkownikiem. Są to klasy COleControl, zestaw funkcji wypalania zdarzeń i mapa wysyłki.

Każdy ActiveX obiekt sterowania, który opracowujesz, dziedziczy zaawansowany zestaw funkcji z klasy bazowej MFC. COleControl Te funkcje obejmują aktywację w miejscu i logikę automatyzacji. COleControl może zapewnić obiekt kontrolny o tej samej funkcjonalności co obiekt okna MFC oraz możliwość uruchamiania zdarzeń. COleControl może również zapewnić kontrolki bez okien, które polegają na kontenerze, aby uzyskać pomoc w niektórych funkcjach zapewnianych przez okno (przechwytywanie myszy, fokus klawiatury, przewijanie), ale oferują znacznie szybsze wyświetlanie.

Ponieważ klasa kontrolna pochodzi z COleControlklasy , dziedziczy możliwość wysyłania lub "ognia", 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ń kontroli ActiveX, zobacz artykuł MFC ActiveX Controls: Events(Kontrolki: 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ć określone 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, zobacz artykuły MFC ActiveX Controls: Methods and Properties (Kontrolki ActiveX MFC: metody i właściwości).

Interakcja między kontrolkami z kontenerami kontroli 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 uruchamia zdarzenia. Na poniższej ilustracji przedstawiono sposób implementacji tych dwóch mechanizmów.

ActiveX control communicates with its container.
Komunikacja między kontenerem kontroli ActiveX a kontrolką ActiveX

Na poprzednim rysunku 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 program COleControl. Aby obsłużyć niektóre żądania kontenera, COleControl wywoła funkcje składowe implementowane w klasie kontrolnej. 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 przez wywołanie funkcji składowych 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 ta różnica nie jest już uniwersalna, ale nadal ma zastosowanie do wielu kontrolek.

Gdy kontrolka bez okien 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ą kontrolkami, a także utworzyć kontrolki, które zaczekają na aktywowanie okna.

Gdy kontrolka z oknem stanie się aktywna, może w pełni współdziałać z kontenerem sterowania, użytkownikiem i Windows. Na poniższym rysunku przedstawiono ścieżki komunikacji między kontrolką ActiveX, kontenerem sterowania i systemem operacyjnym.

Msg processing in active windowed ActiveX control.
Windows przetwarzania komunikatów w kontrolce ActiveX okiennej (gdy jest aktywna)

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. Następnie można odtworzyć kontrolki, 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 z nośnikiem magazynu do użycia w odpowiednim czasie. Aby uzyskać więcej informacji na temat serializacji, zobacz artykuł MFC ActiveX Controls: Serializing. Aby uzyskać informacje na temat optymalizacji serializacji, zobacz Optymalizowanie trwałości i inicjowania w kontrolkach ActiveX: Optymalizacja.

Instalowanie klas kontrolek i narzędzi ActiveX

Podczas instalowania programu Visual C++klasy kontrolek MFC ActiveX oraz handlu detalicznego i debugowania ActiveX kontroli bibliotek DLL czasu wykonywania są instalowane automatycznie, jeśli w instalatorze są wybierane kontrolki ActiveX (są one domyślnie zaznaczone).

Domyślnie klasy kontrolek i narzędzia ActiveX są instalowane w następujących podkatalogach w obszarze \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 opracowania 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 tworzenia kontrolek ActiveX za pomocą MFC

Istnieją również przykłady kontrolek ActiveX MFC. Aby uzyskać więcej informacji na temat tych przykładów, zobacz Przykłady kontrolek: MFC-Based ActiveX Controls

Zobacz też

Elementy interfejsu użytkownika