Obtendo janela contígua Redimensionar evento no SDL 2

11

Eu uso a seguinte estrutura para obter uma nova largura e altura da janela do SDL redimensionada. Mas com essa estrutura, só consigo obter novos dados depois que o redimensionamento é feito, quando termino de arrastar e solto o botão do mouse. Como posso obter os novos dados continuamente, isto é, enquanto estou arrastando a janela.

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;
  }
}
    
por bfkjohns 30.08.2015 в 11:02
fonte

2 respostas

5
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);
    ...
}

use o EventWatch da SDL para resolvê-lo.

    
por ZhuYaDong 19.11.2016 / 13:54
fonte
0

Se você está no Windows, já tentou usar a API do Windows?

Eu sei que não é uma correção real, mas se você não estiver fazendo um aplicativo de plataforma cruzada, deverá tentar.

Use o HWND para encontrar a janela do SDL e retornar o tamanho da janela.

    
por Kevin Duarte 25.02.2017 / 10:19
fonte