[2] Bezpłatna biblioteka graficzna Microchip Graphics Library dla mikrokontrolerów PIC24 i PIC32: przykłady

List. 9. Struktura GOL_MSG

Type – definiuje typ urządzenia w którym wygenerowane wiadomość (message). Możliwe typy urządzeń, to: TYPE_UNKNOW, TYPE_KEYBOARD, TYPE_TOUCHSCREEN i TYPE_MOUSE

uiEvent- rodzaj zdarzenia generowanego przez obiekt: EVENT_INVALID (zdarzenie błędne), EVENT_MOVE(przesunięcie), EVENT_PRESS(naciśnięcie), EVENT_STILLPRESS(ciągłe naciskanie), EVENT_RELEASE(zwolnienie), EVENT_KEYSCAN(skanowanie stanów klawiszy), EVENT_CHARCODE.

Definicja składowych param1 i param2 jest zależna od typu urządzenia. Na przykład dla ekranów dotykowych TYPE_TOUCHSCREEN zawierają współrzędne x,y , a dla typu TYPE_KEYBOARD param1 zawiera ID obiektu, a param2 znak kodu klawisza.

  • Wewnątrz funkcji GOLMsg z wskaźnikiem do struktury GOL_MSG jako argumentem  (listing 10) jest wykonywana pętla wykrywająca obiekt generujący wiadomość.
  • Wykryty obiekt zwraca przekonwertowaną wiadomość w oparciu o parametry GOL Messager.
  • Użytkownik może zmienić domyślną akcję zdefiniowaną przez bibliotekę w  funkcji GOLMsgCallBack.
  • Po wykonaniu akcji obiekt powinien być narysowany ponownie w zależności od swojego nowego stanu.

 

List. 10. Funkcja GOLMsg

void GOLMsg(GOL_MSG *pMsg)

Na listingu 11 pokazano pętlę, w której jest wywoływana funkcja GOLDraw, w której są  sprawdzane stany obiektów i ewentualnie wykonywane jest rysowanie, sprawdzane jest czy z drivera ekranu dotykowego nie jest przesłana informacja (message) o nie wykonanej akcji (funkcja TouchGetMsg) i na końcu na podstawie  tej informacji funkcja GOLMsg interpretuje ta wiadomość i przekazuje sterowanie do funkcji GOLMsgCallback (listing 12).

 

List. 11. Funkcja GOLMsgCallback

List. 12. Pętla obsługi graficznego interfejsu użytkownika

Przed wywołaniem tej pętli wszystkie używane  obiekty graficzne muszą być utworzone.

Pobranie informacji o wykonanej akcji przez użytkownika z wykorzystaniem ekranu dotykowego wykonuje funkcja TouchGetMsg (listing 13). Zależnie od odczytanych współrzędnych x i y oraz poprzednio odczytanych współrzędnych prevX i prevY jest modyfikowana składowa uiEvent struktury GOL_MSG.

 

List. 13. Funkcja odczytu wiadomości (message) z interfejsu ekranu dotykowego

O autorze