Active Template Library

23 października 2009

Ostatnio bawiłem sie z prostą aplikacją embedując kontrolkę Internet Explorera oraz silnik Gecko. Po raz pierwszy miałem nieco szerszy i dłuższy kontakt z technologią COM i XPCOM.

Nieodłączny związek z COM ma biblioteka ATL (Active Template Library), która w rzeczywistości jest zbiorem klas szablonowych języka C++ opracowanych przez Microsoft. Jak sie można domyślić z nazwy, idea podobna jak w przypadku STL. Głównym zadaniem biblioteki jest ułatwienie korzystania i tworzenia komponentów w technologii COM.

Jak to zawsze bywa, w każdej bibliotece można znaleźć ciekawe i przydatne funkcje. Podobnie ma się sprawa z ATL, gdzie prócz czysto COM-owych rzeczy znajdziemy całkiem fajne klasy i funkcje, które możemy wykorzystać w dowolnym programie. Do tego nie musimy dodatkowo nic linkować do programu.

Do wspomnianych utilsów można zaliczyć mechanizmy konwersji stringów pomiędzy różnymi formatami i kodowaniami. Oczywiście ciekawych rzeczy można znaleźć dużo więcej (obsługa plików, rejestru, inteligentne wskaźniki…).

W przypadku opisanych stringów, skorzystanie z tych mechanizmów zamiast ręcznego rzeźbienia kodu z użyciem funkcji MultiByteTo/WideCharTo... jest dużo łatwiejsze i bezpieczniejsze. Mamy kod odporny na wyjątki, a dzięki zastosowaniu idiomu RAII nie musimy martwic sie o przydział i zwalnianie pamięci, o wszystko zadbają odpowiednie mechanizmy języka i kompilator.

Sam za pierwszym razem próbowałem opakować w klasę i RAII wspomniane funkcje i stworzony kod byłem gotowy zostawić w projekcie, gdy nagle mnie olśniło, „korzystam z COM, wspieram sie ATL-em, więc na pewno coś musi być dostępne do zabaw z stringami” i znalazłem ;)

Tworzony program pisałem w czystym WinAPI, ale bez problemów można wykorzystać ATL w dowolnym innym, czy to MFC (choć sam ma swoje mechanizmy), czy WTL, czy cokolwiek innego.

ATL powstało głownie do uproszczenia zabaw z COM, więc posiada jedynie elementy do tego niezbędne. Chcąc w podobnym stylu stworzyć aplikację, warto skorzystać z biblioteki WTL (Windows Template Librar), która również jest zbiorem wzorców, tym razem implementujących obsługę okien i całej reszty niezbędnej do budowy aplikacji dla systemu Windows.

Bardzo zachęcam do poznania i korzystania, szczególnie, gdy musimy bawić sie z technologią COM. Ale nawet jeśli piszemy zwykłą aplikację pod system Windows warto skorzystać z szablonów oferowanych przez ATL. Nasz kod będzie bardziej zwięzły i bezpieczny pod względem wyjątków oraz zarządzania zasobami, nie musimy się tym już ręcznie zajmować i dbać o zwolnienie (konstruktor weźnie to na swoje barki przy wyjściu z zasięgu).

Przy okazji, API w xime prawdopodobnie będzie oparte na technologii podobnej do COM/XPCOM ;)

Podobne notatki:

Może zainteresują Cię również następujące, pododbne notatki:

Nikt jeszcze nie skomentował tego wpisu.
Możesz być pierwszy.

Dodaj swój komentarz

Możesz użyć tych tagów XHTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Jeśli chcesz wstawić kilku linijkowy fragment kodu, użyj tagów <pre lang="x"></pre> (gdzie x język kodu np. cpp, perl, html). W ten sposób kod zostanie odpowiednio sformatowany i pokolorowany przez system.

Uwaga!

Na tym blogu działa system cache oraz filtr antyspamowy. Twój komentarz może być widoczny na stronie z pewnym opóźnieniem. Proszę o cierpliwość. Jeśli utraciłeś już wszystkie jej zasoby poinformuj mnie o tym, być może system uznał Cię za spamera ;)