Proponuję wam zupełnie nowe podejście do tworzenia wtyczek. Twórzmy je objektowo. To się opłaca.
Nie tylko nam będzie łatwiej zarządzać takim projektem ale i inni programiści będą mogli z niego łatwiej
korzystać.
Przedstawie dwa podejścia do tworzenia wtyczek. Pierwszy używając wyłącznie SDK w tym celu. Warto go
przejrzeć gdyż zawiera kilka sporo szczegółów.
Drugi, zalecany przezemnie, wykorzystuje klasę "Wtyczka" z biblioteki kAPI. Jest to sposób o
wiele prostrzy a przy tym zaoszczędzimy sporo czasu, pozbędziemy się monotonnego pisania tych samych
lini dla każdej wtyczki oraz uchroni nas od błędów.
Podane niżej kroki dotyczą obydwu metod
Na początek
Utwórz projekt zgodnie ze wskazówkami zawartymi w tym artykule.
Organizacja projektu
Podzielmy nasz projekt na kilka plików. Podzielą one implementację naszej wtyczki na kilka modułów.
Dzięki temu, później będzie nam łątwiej odnaleźć wybrany fragment kodu.
Dodajmy do projektu następujące pliki:
main.cpp - ten plik już powinniśmy mieć jeśli utworzyliśmy projekt zgodnie z moimi wcześniejszymi instrukcjami
wtyczka.h - w tym pliku zadeklarujemy klasę reprezentującą naszą wtyczkę
wtyczka.cpp - plik ten będzie zawierać definicję głównych metod klasy
wtyczka_kAPI_c.cpp - umieścimy tu definicje głównych metod odpowiedzialnych za współpracę wtyczki z rdzeniem konnekta.
Metody te zostaną raz zdefiniowane, później żadką będziemy je zmieniać. Dlatego zostały zamknięte w jednym pliku
wtyczka_kAPI.cpp - w pliku tym zostaną umieszczone dwie główne metody wtyczki do przetwarzania komunikatów.
Będą to bardzo rozbudowane metody i często modyfikowane. Umieścimy tu też mniejsze metody do obsługi konfiguracji
wtyczka_winAPI.cpp - tylko w tym pliku zostanie includowany plik "windows.h". Oznacza to iż w tym pliku zostaną umieszczone
metody odwołujące się do WinApi. Nie powinno się ich mieszać z metodami nie powiązanymi z tą WinApi z kilku powodów.
Po pierwsze, całą funkcjonalność zależną od systemu a co za tym idzie podatną na błędy mamy w jednym miejscu. Po drugie
jeśli konnek będzie kiedyś przenoszony na inne platformy będzie konieczna zmiana tylko tego fragmentu kodu