Popełniłem kawałek kodu za który strażnicy obiektowości od razu posłaliby mnie do karceru. Mogę jednak swoją ignorancję uzasadnić w prosty sposób: Gdybym pisał to zgodnie z zasadami OOP to użytkownik w późniejszym czasie używający tego co pięknie napisałem stwierdziłby, że używa się tego dość ciężko.
Piszę oczywiście o tej nieszczęsnej obsłudze zdarzeń pochodzących z GUI. Kilka postów wcześniej rozważałem sposoby na rozwiązanie tego problemu i doszedłem do wniosku (co zresztą doradzał mi też Tarains) że najlepiej będzie stworzyć coś a’la MS’owa procedura okna.
Po zakodzeniu tego w AGE i wypróbowaniu widzę, że jest to całkiem przyjemny sposób, nie mówiąc już o tym, że nie trzeba co klatkę sprawdzać czy coś się stało z GUI.
Muszę przyznać, że jestem całkiem zadowolony ze wstępnych testów tego rozwiązania. Spróbuję jeszcze stworzyć trochę większe GUI żeby zobaczyć jak mocno rozrośnie mi się kod.

Ej, przecież są dwa uznane sposoby na obsługę zdarzeń w językach obiektowych: użycie metod wirtualnych lub delegatów. Wprawdzie żaden nie jest natywnie wspierany przez C++, ale obu ich można używać.
Jeśli chodzi o rozsyłanie eventów typu “klawisz ‘A’ wciśnięty” to jest to rozwiązane za pomocą własnie metod wirtualnych.
Wyżej pisałem o łapaniu eventów od obiektów GUI. Teraz mam tak, że lecą one wszystkie do aktywnego zadania (czyli głównego obiektu zarządzającego tym co się aktualnie dzieje) i tam można je obsługiwać podobnie do tego jak się to robiło w procedurach windowsa.
Czyli dostaje się wskaźnik na kontrolkę, której dotyczy zdarzenie, oraz dane zdarzenia i robi się jednego, wielkiego, perfidnie obleśnego switcha? Dziękuje, postoję
Tak właśnie tak się robi
No jakoś trzeba te zdarzenia obsługiwać, a jak są w jednym miejscu to robi sie to łatwiej.
BTW: switch nie musi byc oblesny. Mozna pisac:
case: okBtnClicked(); break;
IMO to jest rozwiazanie lepsze niz np. subklasowanie guiButton, żeby zaimplementować co robi jeden przycisk. Nie wiem jak to jest z delegatami bo tym się nie bawiłem jeszcze. Sprawdzę jak to działa i jak będzie wygodniejsze to chętnie je wykorzystam ^^
Ludzie, nie bójcie się switchów. Unikanie tego za wszelką cenę to już jest obiektowy fanatyzm a’la Banda Czworga