|
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_DropEvent
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Struktura zawiera zdarzenie używane przy żądaniu otwarcia pliku przez system.
| Uint32 | type | rodzaj zdarzenia: SDL_DROPFILE, SDL_DROPTEXT, SDL_DROPBEGIN lub SDL_DROPCOMPLETE |
| Uint32 | timestamp | czas zdarzenia |
| char* | file | nazwa pliku, który powinien być zwolniony za pomocą SDL_free(), ma wartość NULL przy BEGIN/COMPLETE |
| Uint32 | windowID | okno, które zostało upuszczone, jeśli takie jest |
// Przykładowy program:
// Zastosowanie SDL_DropEvent
#include "SDL.h"
int main(int argc, char *argv[]) {
SDL_bool done;
SDL_Window *window;
SDL_Event event; // Deklaruj uchwyt zdarzenia
char* dropped_filedir; // Wskaźnik katalogu upuszczonego pliku
SDL_Init(SDL_INIT_VIDEO); // inicjalizacja SDL2
window = SDL_CreateWindow( // Utwórz okno
"SDL_DropEvent usage, please drop the file on window",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640,
480,
SDL_WINDOW_OPENGL
);
// Sprawdź, czy okno faktycznie zostało utworzone
if (window == NULL) {
// Jeśli okna nie dało się utworzyć...
SDL_Log("Could not create window: %s", SDL_GetError());
SDL_Quit();
return 1;
}
SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
done = SDL_FALSE;
while (!done) { // Pętla programu
while (!done && SDL_PollEvent(&event)) {
switch (event.type) {
case (SDL_QUIT): { // W przypadku wyjścia
done = SDL_TRUE;
break;
}
case (SDL_DROPFILE): { // W przypadku upuszczonego pliku
dropped_filedir = event.drop.file;
// Pokazuje katalog upuszczonego pliku
SDL_ShowSimpleMessageBox(
SDL_MESSAGEBOX_INFORMATION,
"File dropped on window",
dropped_filedir,
window
);
SDL_free(dropped_filedir); // Usuń pamięć dla dropped_filedir
break;
}
}
}
SDL_Delay(0);
}
SDL_DestroyWindow(window); // Zamknij u usuń okno
SDL_Quit(); // Posprzątaj
return 0;
}
|
Zdarzenia te są standardowo uaktywnione. Możesz je zablokować za pomocą SDL_EventState().
Jeśli zdarzenia są uaktywnione, musisz w nich zwalniać pamięć przydzieloną dla nazwy pliku za pomocą SDL_free().
SDL_DROPTEXT, SDL_DROPBEGIN i SDL_DROPCOMPLETE są dostępne od SDL 2.0.5.
Aby uaktywnić przeciąganie i upuszczanie w swojej aplikacji SDL, musisz również edytować swój plik info.plist. Dodaj/zmodyfikuj Document Types. Na przykład, aby uaktywnić wszystkie typy dokumentów, dodaj typ mime "public.data" jako typ dokumentu.
![]() |
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.