Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1
Plan prezentacji Component Object Model Identyfikatory Interfejs IUnknown Co-klsay, pojemniki, kontenery Korzystanie z obiektu COM ActiveX Kontrolki ActiveX Podsumowanie
Component Object Model Standard binarny Uniezależnienie od języka programowania Nie definiuje czym jest komponent lub obiekt Interfejs – podstawowa jednostka Niskopoziomowe API (np. DirectX, SQL Server, MS Acces) Wyobrażenie obiektu COM
Identyfikatory GUID(Globally Unique Identifier) lub UUID(Universally Unique Identifier) CLSID – używany dla co-klas IID – używany dla interfejsów
Interfejs IUnknown [uuid( C )] Interface IUnknown{ HRESULT QueryInterface ([in] const IID iid, [out, iid_is(iid)] IUnknown iid); unsigned long AddRef(); unsigned long Release(); }
Co-klasy, pojemniki, kontenery Co-klasa(Component Object Class) - kod obiektu Pojemnik – opakowanie obiektu - (DLL, plik EXE, serwis) Kontener – program - przeglądarka internetowa z ActiveX
Korzystanie z obiektu COM... HRESULT hr; IActiveDesktop* pIAD; hr = CoCreateInterface(CLSID_ActiveDesktop, NULL, CLSTX_INPROC_SERVER, IID_IActiveDesktop, (void**) &pIAD); if (SUCCEEDED(hr)){... pIAD->GetWallpaper();... }else{ // obsługa błędów } pIAD->Release(); // zwolnienie interfejsu if (FAILED(hr)) // alternatywny sposób obsługi błędów
ActiveX Kolejna edycja technologii OLE Zastosowania do aplikacji internetowych Bazuje na modelu COM Implementacja interfejsu IUnknown Zdolność samorejestrowania się Interfejsy wyjściowe
ActiveX Kontrolki ActiveX (strona www) Dokumenty ActiveX (Internet Explorer) Zastosowania ściśle internetowe(JScript, VBScript)
Kontrolki ActiveX … m_pMyAnimateCtrl = new CAnimateCtrl; //Utw. klasy okna animacji CRect wndSize; this->GetClientRect(&wndSize); // Pobranie rozmiarów okna kontrolki // Utworzenie okna animacyjnego #define ID_SOANIMCTRL 1001 UINT styles = WS_CHILD | ACS_TRANSPARENT | ACS_AUTOPLAY | ACS_CENTER; m_pMyAnimateCtrl->Create(styles, wndSize, this,ID_SOANIMCTRL); // Wyświetlenie okna i wskazanie pliku z animacją m_pMyAnimateCtrl->ShowWindow(SW_SHOW); m_pMyAnimateCtrl->Open("C:\\ZEGAR.AVI"); …
Kontrolki ActiveX cd. Kontrolka ActiveX wyświetlająca animowany plik AVI.
Podsumowanie Wygoda użycia elementów sterowania ActiveX Powszechność technologii COM w produktach Microsoftu Kontrolki ActiveX opierają się w większości na innych technologiach Pełna funkcjonalność obejmuje na tyle dużą liczbę interfejsów, że do implementacji potrzeba specjalistycznych narzędzi Kontynuacja wsparcia dla technologii w środowisku.NET
Bibliografia Clemens Szyperski: Oprogramowanie komponentowe. Obiekty to za mało. WNT, Warszawa 2001 Al. Williams. MFC Czarna księga (ActiveX), Helion, Microsoft MSDN Library