繁体   English   中英

在 SDL 2 中获取连续的窗口调整大小事件

[英]Getting Continuous Window Resize Event in SDL 2

我使用以下结构来获取调整大小的 SDL 窗口的新宽度和高度:

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;
  }
}

但是使用这种结构,我只能在调整大小完成后才能获得新数据,即当我完成拖动并释放鼠标按钮时。

如何在拖动窗口时连续获取新数据?

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

使用 SDL 的 EventWatch 可以解决它。

如果您在 Windows 上,您是否尝试过使用 windows api?

我知道这不是一个真正的修复,但如果你不是在制作跨平台应用程序,你应该试一试。

使用 HWND 查找 SDL 的窗口并返回窗口大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM