Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek
|
SDL_SetWindowHitTest
SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Użyj tej funkcji, aby dodać funkcję wywoływaną zwrotnie, która decyduje, czy obszar okna posiada specjalne własności.
int SDL_SetWindowHitTest(SDL_Window* window, SDL_HitTest callback, void* callback_data) |
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. |
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.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 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.