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

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

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

Powiązane struktury

Powiązane funkcje


Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

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