Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Uaktualniono: 31.07.2022

©2022 mgr Jerzy Wałaszek
I LO w Tarnowie

Interfejs SDL2:

SDL_SetWindowHitTest

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.

SDL_SetWindowHitTest

Użyj tej funkcji, aby dodać funkcję wywoływaną zwrotnie, która decyduje, czy obszar okna posiada specjalne własności.

Składnia

int SDL_SetWindowHitTest(SDL_Window* window,
                         SDL_HitTest callback,
                         void*       callback_data)

Parametry funkcji

window okno do ustawienia testu trafień.
callback funkcja do wywołania podczas wykonywania tego testu.
callback_data wskaźnik definiowany przez aplikację, przekazywany do funkcji callback.

Wartość zwracana

Zwraca 0 przy sukcesie lub -1 przy błędzie (również przy nieobsługiwaniu tej opcji); wywołaj funkcję SDL_GetError(), aby otrzymać więcej informacji na temat błędu.

Uwagi

Prototyp funkcji callback jest następujący:
SDL_HitTestResult SDL_HitTest(SDL_Window*      win,
                              const SDL_Point* area,
                              void*            data)

gdzie SDL_HitTest jest nazwą twojej funkcji, a jej parametrami są:

win SDL_Window, dla którego został ustawiony test na trafienie
area punkt SDL_Point, który będzie testowany na trafienie w okno
data to, co zostało przekazane jako callback_data do SDL_SetWindowHitTest()

Funkcja callback powinna zwracać SDL_HitTestResult.

Zwykle okna są przeciągane i modyfikowane rozmiarowo za pomocą elementów udostępnianych przez menadżera okien (pasek tytułowy, brzegi, itp.), lecz dla niektórych aplikacji sensowne jest przesuwanie okien z innego miejsca gdzieś wewnątrz samego okna, na przykład, można mieć okno bez brzegów, które powinno być przesuwane z jego dowolnego punktu, lub symulować jego własny pasek tytułowy, itp.

Ta funkcja umożliwia aplikacji dostarczenie własnej funkcji wywoływanej zwrotnie, która oznaczy części danego okna jako specjalne. Będzie ona wywoływana podczas przetwarzania zdarzeń, gdy wystąpi potrzeba poinformowania systemu operacyjnego, aby traktował pewien obszar okna w sposób szczególny; używanie takiej funkcji znane jest pod nazwą "testowania trafienia" (ang. hit testing).

Dane z myszki mogą nie zostać dostarczone do twojej aplikacji, jeśli wystąpią wewnątrz specjalnego obszaru; system operacyjny często zastosuje je do przesuwania okna lub do zmiany jego rozmiaru i nie dostarczy ich do aplikacji.

Określenie NULL jako callback wyłącza testowanie trafień, które jest wyłączone standardowo.

Na platformach nie obsługujących tej opcji funkcja zwraca -1 bezwarunkowo, nawet przy próbie wyłączenia testowania trafień.

Twoja funkcja callback może zostać wywołana w dowolnym momencie, a jej wywołanie nie oznacza żadnego specyficznego zachowania (na przykład w Windows zostanie ona na pewno wywołana, gdy system operacyjny decyduje, czy przeciągnąć twoje okno, lecz jest również wywoływana z mnóstwa innych powodów, a niektóre z nich są niezwiązane z niczym, na czym ci prawdopodobnie zależy, oraz gdy myszka nie jest właściwie w miejscu testowania). Zatem ponieważ funkcja może zostać wywołana w dowolnej chwili, powinieneś jej kod jak najbardziej optymalizować, unikając wielu alokacji pamięci itp.

Wersja

Funkcja dostępna od SDL 2.0.4.
Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2022 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.