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: 22.02.2026

©2026 mgr Jerzy Wałaszek

Interfejs SDL2:

SDL_DropEvent

SPIS TREŚCI

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

SDL_DropEvent

Struktura zawiera zdarzenie używane przy żądaniu otwarcia pliku przez system.

Pola danych

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 kod

// 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;
}

Uwagi

Zdarzenie SDL_DropEvent jest członkiem unii SDL_Event i wykorzystywane jest przy zgłoszeniu zdarzenia typu SDL_DROPFILE, SDL_DROPTEXT, SDL_DROPBEGIN lub SDL_DROPCOMPLETE. Dostęp uzyskujesz poprzez pole zdarzenia drop.

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.

Mac OS X

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.

Wersja

Struktura dostępna od SDL 2.0.0.

Powiązane enumeracje

SDL_EventType

Powiązane struktury

SDL_Event

Powiązane funkcje

SDL_EventState

do podrozdziału  do strony 

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: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.