gpt4 book ai didi

c++ - 当鼠标移出窗口时 SFML 窗口自行关闭

转载 作者:行者123 更新时间:2023-11-27 22:33:32 25 4
gpt4 key购买 nike

我的 SFML 应用程序按预期构建和运行,但是当让鼠标退出/进入左窗口边框的窗口时,它会意外关闭。

我怎样才能让这个错误停止发生?我不希望窗口关闭,除非我在代码中调用它。

Visual Studio 2019

SFML-2.5.1(我想我下载的版本是:Visual C++ 15 (2017) - 32-bit)

这是我正在运行的代码的最简单示例,它会产生上述错误:

#include "SFML-2.5.1/include/SFML/Graphics.hpp"
#include <iostream>
#include <vector>
#include <string>

using std::cout;
using std::endl;
using std::vector;
using std::endl;
using std::string;

sf::Vector2f window_size(800, 600);
sf::VideoMode video_mode(window_size.x, window_size.y);
sf::RenderWindow window(video_mode, "Hello");

int main() {
while (window.isOpen()) {
//Deal with input and update program
sf::Event event;

while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed
|| event.key.code == sf::Keyboard::Escape) {
window.close();
}
}

//Draw things on screen
window.clear(sf::Color::White);
//Draw things here, not nothing right now
window.display();
}
}

最佳答案

sf::Event 被组织为标记 union ,其中 type 成员是标记,事件成员取决于标记。

key 成员仅在 type 是键盘事件类型之一(sf::Event::KeyPressedsf::Event::KeyReleased).

检查不活跃的 union 成员是未定义的行为。实际上,发生的事情可能类似于以下内容。一些其他事件发生,其中一个成员在数值上等于 sf::Keyboard::Escape 并且在物理上与 key.code 共享空间。该程序正在访问该成员并将其错误地解释为 key.code


相关文档:

关于c++ - 当鼠标移出窗口时 SFML 窗口自行关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57991556/

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