我使用以下结构来获取调整大小的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的窗口并返回窗口大小。