Wiki Page Content

Revision 6 as of 2013-09-15 13:33:22

Clear message

SDL_DropEvent

A structure that contains an event used to request a file open by the system.

Data Fields

Uint32

type

the event type; SDL_DROPFILE

Uint32

timestamp

timestamp of the event

char*

file

the file name, which should be freed with SDL_free()

Code Examples

// Example program:
// SDL_DropEvent usage

#include "SDL.h"
#include <stdio.h>

int main(int argc, char *argv[]) {
    
    SDL_Init(SDL_INIT_VIDEO);               //  SDL2 Initialization
    
    SDL_Window *window = SDL_CreateWindow(  //  Create a window
        "SDL_DropEvent usage, please drop the file on window",
        SDL_WINDOWPOS_CENTERED,
        SDL_WINDOWPOS_CENTERED,
        640,
        480,
        SDL_WINDOW_OPENGL
    );

    // Check that the window was successfully made
    if (window == NULL) {
        // In the event that the window could not be made...
        printf("Could not create window: %s\n", SDL_GetError());
        return 1;
    }
    
    SDL_Event event;                        //  Define event handle
    char* droped_filedir;                   //  Pointer for directory of droped file
    
    for(;;) {                               //  Program loop
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
              case (SDL_QUIT): {            //  In case of Exit
                return 0;
              }

              case (SDL_DROPFILE): {        //  In case if Droped file
                droped_filedir = event.drop.file;
                //  Shows directory of droped file
                SDL_ShowSimpleMessageBox(
                    SDL_MESSAGEBOX_INFORMATION,
                   "File droped on window",
                   droped_filedir,
                  window
                );
                SDL_free(droped_filedir);    //  Free droped_filedir memory
                break;
              }
            }
        }
        SDL_Delay(0);
    }
    
    SDL_DestroyWindow(window);        //  Close and destroy the window
    
    SDL_Quit();                       //  Clean up
    return 0;
}

Remarks

SDL_DropEvent is a member of the SDL_Event union and is used when an event of type SDL_DROPFILE is reported. You would access it through the event's drop field.

This event is disabled by default. You can enable it with SDL_EventState().

If you enable this event you must free the filename in the event.

Mac OSX

To enable drag&drop on your SDL app, you must also edit your info.plist file. Add/Modify Document Types. For example, to enable all document types, add the "public.data" mime type as a document type.


CategoryStruct, CategoryEvents

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit