event.window.windowID
的输出有什么区别?和 SDL_GetWindowID()
?
为什么是std::cout << m_SDLEvent.window.windowID << std::endl;
在控制台中输出 1819558491 而 std::cout << SDL_GetWindowID(m_SDLWindow) << std::endl;
输出 1 ?
我如何获得我的 SDL_Window*
的正确 ID在下面的方法中?
void InputManager::Update()
{
SDL_PollEvent(&m_SDLEvent);
switch (m_SDLEvent.type)
{
case SDL_QUIT:
std::cout << m_SDLEvent.window.windowID << std::endl;
SDL_HideWindow(SDL_GetWindowFromID(m_SDLEvent.window.windowID));
break;
}
}
最佳答案
您看到的是垃圾窗口 ID,因为您访问了一个不活动的 union 字段。这是未定义的行为。
如果m_SDLEvent.type == SDL_WINDOWEVENT
,您只能访问m_SDLEvent.window
。
但是如果m_SDLEvent.type == SDL_QUIT
,你必须使用m_SDLEvent.quit
结构,它没有窗口id字段(因为SDL_QUIT不特定于一个窗口,但意味着应关闭整个应用程序)。
关于c++ - SDL event.window.windowID 与 GetWindowID(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49842342/