2015-08-30 15 views
9

Uso la seguente struttura per ottenere nuova larghezza e altezza della finestra SDL ridimensionata. Ma con questa struttura sono in grado di ottenere nuovi dati solo dopo aver eseguito il ridimensionamento, cioè quando ho finito di trascinare e rilasciare il pulsante del mouse. Come posso ottenere continuamente i nuovi dati, mentre sto trascinando la finestra.Evento Ridimensionamento finestra ridimensionabile in SDL 2

if (sdl_set->GetMainEvent()->type == SDL_WINDOWEVENT) 
{ 
    if (sdl_set->GetMainEvent()->window.event == SDL_WINDOWEVENT_RESIZED) 
    { 
    ScreenWidth = sdl_set->GetMainEvent()->window.data1; 
    ScreenHeight = sdl_set->GetMainEvent()->window.data2; 
    cout << "Window Resized!" << endl; 
    } 
} 
+2

Provare ['SDL_WINDOWEVENT_SIZE_CHANGED'] (https://wiki.libsdl.org/SDL_WindowEventID) – Drop

+3

SDL_WINDOWEVENT_SIZE_CHANGED NON è documentato come fornire aggiornamenti di ridimensionamento continui. E sperimentalmente (su mac os x) non lo fa. Mi piacerebbe anche sapere come ottenere continui eventi di ridimensionamento durante il gesto dell'utente! https://wiki.libsdl.org/SDL_WindowEventID –

+3

In realtà è impossibile a causa di questo bug: https://bugzilla.libsdl.org/show_bug.cgi?id=2077 –

risposta

2
static int resizingEventWatcher(void* data, SDL_Event* event) 
    if (event->type == SDL_WINDOWEVENT && 
     event->window.event == SDL_WINDOWEVENT_RESIZED) { 
    SDL_Window* win = SDL_GetWindowFromID(event->window.windowID); 
    if (win == (SDL_Window*)data) { 
     printf("resizing.....\n"); 
    } 
    } 
    return 0; 
} 

int main() { 
    SDL_Window* win = ... 
    ... 
    SDL_AddEventWatch(resizingEventWatcher, win); 
    ... 
} 

utilizzare EventWatch di SDL può risolverlo.

+1

Mi chiedo perché è diverso da 'SDL_PollEvent' modo? – pergy

0

Se sei su Windows, hai provato a utilizzare Windows API?

So che non è una soluzione reale, ma se non si sta facendo un'applicazione cross platform, si dovrebbe fare un tentativo.

Utilizzare HWND per trovare la finestra di SDL e restituire le dimensioni della finestra.

Problemi correlati