Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

logo

Autor artykułu: mgr Jerzy Wałaszek

 

SDL2

Interfejs SDL2:

SDL_DropEvent

Rozdziały:
     Interfejs SDL2 wg nazw
     Interfejs SDL2 wg kategorii

 

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2. Oryginał znajdziesz pod tym adresem: https://wiki.libsdl.org/CategoryAPI.

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

Powiązane struktury

Powiązane funkcje

 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 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.