|
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 |
©2026 mgr Jerzy Wałaszek
|
SDL_TextInputEvent
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Struktura zawiera informację o zdarzeniu wprowadzania tekstu z klawiatury.
| Uint32 | type | SDL_TEXTINPUT. |
| Uint32 | timestamp | czas zdarzenia. |
| Uint32 | windowID | okno ze skupieniem klawiaturowym, jeśli istnieje. |
| char[32] | text | tekst wejściowy zakończony zerem kodowany w UTF-8. |
// Zamiana 1024 ramek próbek dźwiękowych przy częstotliwości 48000Hz z float32 na int16. SDL_AudioCVT cvt; SDL_BuildAudioCVT(&cvt, AUDIO_F32, 2, 48000, AUDIO_S16, 2, 48000); SDL_assert(cvt.needed); // To zawsze jest potrzebne. cvt.len = 1024 * 2 * 4; // 1024 ramek sampli dźwiękowych stereo typu float32. cvt.buf = (Uint8 *) SDL_malloc(cvt.len * cvt.len_mult); // wczytaj swoje dane float32 do cvt.buf. SDL_ConvertAudio(&cvt); // cvt.buf zawiera cvt.len_cvt bajtów skonwertowanych danych. |
Oto samouczek (język angielski).
Szczegółowe wyjaśnienie (z listy mailingowej SDL, autor Jiang Jiang <gzjjgod at gmail.com>):
W typowej aplikacji GUI system operacyjny będzie odpowiedzialny za przekazywanie ci wprowadzanego teksu, ty zaś możesz wybrać sposób i miejsce jego prezentacji w swoim interfejsie użytkownika. Powiedzmy, że za pomocą pewnej metody odczytu wpisałem "abc" i otrzymałem
znak Unicode "X". Aplikacja SDL najpierw otrzyma trzy zdarzenia typu
SDL_TEXTEDITING z tekstami 'a', 'ab' i 'abc', a na końcu otrzyma zdarzenie
SDL_TEXTINPUT ze znakiem Unicode 'X'.
Podczas tego procesu komponowania tekstu użytkownik może naciskać dowolne
klawisze, np. funkcyjne, Backspace, a zarówno aplikacja SDL jak i systemowa
metoda wprowadzania tekstu otrzymają te klawisze i zdecydują, czy je
obsłużyć, czy nie obsłużyć. Na przykład, gdy użytkownik naciśnie Backspace,
to większość metod wprowadzania usunie ostatni znak we wprowadzanym tekście,
a aplikacja SDL otrzyma nowe zdarzenie SDL_TEXTEDITING (powiedzmy, że
użytkownik wpisał a, b, Backspace, c, to aplikacja otrzyma 4 zdarzenia
zawierające teksty 'a', 'ab', 'a', 'ac').
[[SDL_SetTextInputRect]]() daje systemowi operacyjnemu wskazówkę, gdzie
należy pokazać listę wprowadzanych znaków, ponieważ system operacyjny nie
wie, gdzie chcesz wyświetlać tekst otrzymywany poprzez zdarzenie
SDL_TEXTEDITING.
|
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.