首页 > 解决方案 > SDL_GetWindowPosition() 不更新 int 指针

问题描述

我正在尝试按照 youtube 上的教程学习 SDL。但是当我尝试使用 SDL_GetWindowPosition() 和 SDL_GetWindowSize() 时,似乎没有更新 int*。

这是我的代码:

#include <iostream>
#include "include/SDL2/SDL.h"

using namespace std;

void CreateWindow(SDL_Window *win){
    win = SDL_CreateWindow("Title",
                           SDL_WINDOWPOS_UNDEFINED,
                           SDL_WINDOWPOS_UNDEFINED,
                           800, 600,
                           SDL_WINDOW_RESIZABLE);

    if (win == nullptr)
        cout<<"Could not create window.\n"<<SDL_GetError()<<'\n';
}

void QuitWindow(SDL_Window *win){
//    SDL_Delay(3000); // 3 seconds
    SDL_DestroyWindow(win);
    SDL_Quit();
}

int main(int argc, char* argv[]) {
    // initialize window
    SDL_Init( SDL_INIT_EVERYTHING );
    SDL_Window *win = nullptr;
    CreateWindow(win);


    // main loop
    SDL_Event event;
    bool run = true;
    while (run){
        int x, y, w, h;
        while (SDL_PollEvent(&event)){
            if (event.type == SDL_QUIT){
                run = false;
                QuitWindow(win);
                break;
            }
        }

        SDL_GetWindowPosition(win, &x, &y);
        SDL_GetWindowSize(win, &w, &h);
        cout<<x<<','<<y<<" ; "<<w<<','<<h<<endl;

    }

    return 0;
}

cout 的结果类似于: 1048591,1872715060 ;1,1965549662

我试图删除主循环并简单地创建窗口 -> getwindowposition -> getwindowsize -> 退出。但仍然得到类似的结果。我怎么解决这个问题?

标签: c++sdl

解决方案


推荐阅读