Be Book Interface Kit Interface Kit Indeks

Interface Kit

Większość aplikacji ma interaktywny graficzny interfejs użytkownika (GUI). Kiedy aplikacja uruchamia się, to wyświetla komplet okien w których użytkownik może kliknąć i pisać. Aplikacja odpowiada na działania użytkownika i uaktualnia jego okno by pokazać użytkownikowi, że go słucha.

Aby uruchomić ten rodzaj interfejsu użytkownika, aplikacja musi:

Interface Kit definiuje zbiór klas C++, które dostarczają struktury dla tych operacji. Ten rozdział po pierwsze wprowadza pojęcie szkieletu dla interfejsu użytkownika, potem opisuje wszystkie klasy, funkcje, typy i stałe zestawu, które definiuje.


Szkielet dla Interfejsu Użytkownika

Graficzny interfejs użytkownika jest zorganizowany wokół okien. W środowisku wielozadaniowym, dowolna liczba aplikacji może działać w tym samym czasie, każda ze swoim własnym zbiorem okien na ekranie. Okna wszystkich uruchomionych aplikacji muszą współpracować we wspólnym interfejsie. Tym bałaganem zarządza Application Server. Jest to przewód wejściowy komunikatów aplikacji i wyjście rysowania:

Obiekty BWindow

Każde okno w aplikacji jest reprezentowane przez oddzielny obiekt BWindow. Skonstruowanie obiektu BWindow ustanawia połączenie z Application Server'em. Gdy wywołujesz funkcje obiektu BWindow do manipulowania oknem (Show(), MoveTo(), SetTitle() i inne), obiekt wysyłą komunikat do serwera, który przetwarza aktualną manipulację.

Klasa BWindow pochodzi od BLooper. Każdy obiekt BWindow zapoczątkowuje wątek (w przestrzeni adresowej aplikacji) gdzie odbiera on i odpowiada na komunikaty interfejsu od serwera.

Wszystkie inne obiekty w Interface Kit grają role które zależą od BWindow. Rysują one w oknie, odpowiadają na komunikaty interfejsu odbierane przez okno, lub działają ze wsparciem innych obiektów, które rysują i odpowiadają na komunikaty.

Obiekty BView

Okno jest rozdzielone na mniejsze prostokątne obszary nazywane widokami. Każdy widok odpowiada jednej części jaką wyświetla okno - pasek pasek przewijania, dokument, lista i tak dalej.

Aplikacja ustala widok przez skonstruowanie obiektu BView i powiązanie z konkretnym obiektem BWindow. Obiekt BView jest odpowiedni do rysowania wewnątrz prostokatnego widoku i do obsługiwania komunikatów interfejsu kierowanych doo tego obszaru.

Rysowanie w widoku

Okno może zachować i wyświetlić przedstawiane obrazy, lecz nie może ono ich narysować;, do tego potrzebuje zbioru obiektów BViews. BView jest pośrednikiem do rysowania, ale nie może on przedstawiać obrazów, które sam tworzy; do tego potrzebuje on BWindow. Te dwa obiekty pracują ręka w rękę.

Każdy obiekt BView jest autonomicznym środowiskiem do rysowania: ma swój własny układ współrzędnych, bieżące kolory, tryb rysowania, obcinanie regionu, czcionkę, pozycję pióra (ang. pen), i tak dalej. Klasa BView definiuje również funkcje, które reprezentują elementarne operacje rysowania takie jak styl linii, rysowanie liter i szybkie przerzucanie obrazu (związane z podwójnym buforowaniem w celu eliminacji migotania obrazu - przyp. tłum.).

Obsługiwanie komunikatów w widoku

Gdy użytkownik działa, komunikaty systemowe, które zgłaszają zachodzące zdarzenia, są wysyłane do obiektu BWindow który z kolei określa, który z obiektów BView wydobył akcję użytkownika i powinien na nią odpowiedzieć. Przykładowo, BView który narysował wypisany tekst może oczekiwać na komunikaty odpowiedzi zgłaszające naciśnięcia klawiszy przez użytkownika. BView który narysował przycisk otrzymuje do obsłużenia komunikaty, które są wygenerowane gdy przycisk jest kliknięty. Klasa BView pochodzi od BHandler'a, więc obiekty BView są odpowiednie, do obsługi komunikatów wyekspediowanych przez BWindow.

Hierarchia widoku

Okna zwykle zawierają pewną liczbę różnych widoków - wszystkie są ułożone w hierarchi poniżej górnego widoku, widok który jest dokładnie tego samego rozmiaru co obszar zawartości okna. Widok górny jest towarzyszem okna; jest on tworzony przez obiekt BWindow gdy BWindow jest konstruowany. Gdy okno zmienia rozmiar, górny widok ma zmieniany rozmiar tak by się dopasował. W przeciwieństwie do innych widoków, górny widok nie rysuje ani nie odpowiada na komunikaty; obsługuje on jedynie połączenie okna z widokami, które tworzy aplikacja i umieszcza w hierarchii.

Hierarchia widoku może być reprezentowana jako struktura rozgałęzionego drzewa z górnym widokiem jako jego korzeniem. Wszystkie widoki w hierarchii (wyłączając widok górny) mają jeden i tylko jeden widok rodzica. Każdy widok (włącznie z widokiem górnym) może mieć dowolna liczbe widoków potomnych.

Kiedy tworzony jest nowy obiekt BView, nie jest on przyłączony do okna i nie ma rodzica. Jest on dodawany do okna przez uczynienie go potomkiem widoku już będącego w hierarchii widoku. Jest to wykonywane w funkcji AddChild(). Widok może być uczyniony potomkiem górnego widoku okna przez wywołanie wersji funkcji AddChild() obiektu BWindow.

Dopóki jest on przypisany do okna, BView nie może nie może rysować i nie odbiera zgłaszanych zdarzeń. Obiekty BView wiedzą jak tworzyć obrazy, ale wymagają one okna do wyświetlenia i przechowania obrazów, przez nich tworzonych.

Rysowanie i obsługiwanie komunikatów w hierarchii widoku

Hierarchia widoku określa co jest wyświetlane, gdzieś na ekranie, a także jak działania użytkownika są związane z odpowiednim obiektem BView:

Nakładające się rodzeństwo

Rodzeństwa nie rysują w pierwotnie zdefiniowanej kolejności. Jeśli zachodzą one zachodzą na siebie, to nie jest określone, który widok narysuje ostatni - czyli, który będzie rysował na przodzie innych. Podobnie, nie jest określone, który widok będzie odbierał zdarzenia myszy, które wystąpią we wspólnym obszarze rodzeństwa.

Dlatego mocno jest zalecane, żebyś rozmieszczał swoje widoki rodzeństwa tak aby nie zachodziły na siebie nawzajem.


Be Book Interface Kit Interface Kit Indeks

Be Book,
...w ślicznym HTML...
dla BeOS wydanie 5

Copyright © 2000 Be, Inc. Wszelkie prawa zastrzeżone.