TUI ma interfejs obiektowy. Istnieje obiekt bazowy, który nie robi nic, a po którym wszystkie inne dziedziczą, co potrzeba. Z niego wywodzi się tc_view reprezentujący ogólny komponent mający pokazywać coś na ekranie. Jego dziećmi są np. tc_background (tło) czy tc_window (okno) oraz takie rzeczy, jak przyciski, pola tekstowe czy suwaki. Interfejs posiada też dwie dodatkowe klasy: klasę aplikacji (konfiguracja oraz inicjacja działania) i palety (obsługa kolorów). Do każdego komponentu interfejsu można przypisać inne, które mają się w nim zawierać. W ten sposób powstaje drzewo zależności uwzględniające takie powiązania, jak np. to, że przycisk X przywiązany jest do konkretnego okienka.
Interfejs posiada własną pętlę główną, która na bieżąco odbiera zdarzenia i kieruje je do właściwego komponentu. W przypadku zdarzeń myszki, której nawiasem mówiąc na początku nie będzie, wystarczy sprawdzać, czy aktualnie przetwarzany komponent posiada jakieś inne, w obrębie których nastąpiło kliknięcie. Jeśli tak, dalsza obsługa zdarzenia kierowana jest właśnie tam.
W przypadku zdarzeń klawiatury rozwiązań jest kilka, jednak ja wybrałem coś a'la Windows. Klawisz TAB przełącza między kontrolkami aktywnego okienka, natomiast kombinacja klawiszy, np. Alt+Tab zmienia aktywne okno.
Przy tej okazji warto nadmienić, że nauczyłęm się korzystać z libtoola służącego do łatwego tworzenia bibliotek współdzielonych. Całkiem przydatne, choć na początku sprawiało kilka kłopotów.






