gpt4 book ai didi

c++ - SDL2 不接收窗口事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:47 25 4
gpt4 key购买 nike

我在带有 Xcode 的 Macbook 上使用 SDL2 已经有一段时间了,我很高兴。最近我试图接收一个焦点丢失事件,但它没有用。经过一些修补,我发现没有收到任何窗口事件,除了一个类型为 512 的窗口事件,它每秒以随机间隔出现 2-5 次。 WindowEventID 是一个枚举,而不是十六进制格式,所以它不应该是一些十六进制数。我在 SDL2 框架中搜索了 512,但一无所获。其他事件,如 SDL_QUITSDL_KEYDOWN 工作正常。有人知道发生了什么事吗?

这是我的事件循环:

SDL_Event event;

bool running = false;
while(running) {
while(SDL_PollEvent(&event)) {
if(event.type == SDL_QUIT)
running = false;

else if(event.type == SDL_KEYDOWN) {
cout << event.key.type << endl;
}
else if(event.type == SDL_WINDOWEVENT) {
cout << event.window.type << endl;
}
}

SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}

最佳答案

您需要检查 event.window.event 而不是 event.window.type,因为 type 更通用并且有一些其他用途(代码 512 与SDL_WINDOW_INPUT_FOCUS 并且它会在您将光标移入或移出窗口时触发)。所以你的代码可能是这样的:

while(SDL_PollEvent(&event)) {
switch(event.type)
{
case SDL_WINDOWEVENT:
switch(event.window.event)
{
case SDL_WINDOWEVENT_ENTER:
cout << "entered" << endl;
break;

case SDL_WINDOWEVENT_LEAVE:
cout << "left" << endl;
break;
}
break;

case SDL_KEYDOWN:
cout << "key pressed: " << event.key.keysym.sym << endl;
break;
}
}

关于c++ - SDL2 不接收窗口事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18454588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com