SFML窗口实现方法hasFocus()
,作为检查窗口是焦点还是背景窗口的便捷方式。
我觉得奇怪的是,这个方法似乎并没有为sf::RenderWindow
实现,特别是当下面的代码编译但没有链接时。 (也许这是开发人员的错误或疏忽?如果是这样,可能会在下一组错误修复中实现这一点。)
代码示例:
sf::RenderWindow window;
while(window.isOpen())
{
if(window.hasFocus())
{
// do something
}
window.clear();
// etc drawing code
}
使用以下内容进行编译:{{1}}
但不幸的是不会链接,出现以下错误:
g++ --std=c++11 main.cpp -o ratwatch -lsfml-graphics -lsfml-window -lsfml-system
我的链接库是否犯了错误?我错过了另一个/tmp/ccWhfqtT.o: In function `main':
main.cpp:(.text+0xc3b): undefined reference to `sf::Window::hasFocus() const'
collect2: error: ld returned 1 exit status
吗?
我设法用以下代码做我想做的事情,但这显然是一个混乱且不必要的复杂的解决方法:
-lsfml...
如果找不到原始问题的解决方案,希望这对那些无法做我想做的事情的人有所帮助。
答案 0 :(得分:2)
您请求的功能已在最新版本的SFML中提供。
void requestFocus();
// to give the window the focus
bool hasFocus() const;
// to check whether the window is currently focused
此请求的问题已在GitHub here上打开。
请求已与此request合并为主。
这是最后的pull request。
您遇到的错误可能是由SFML标头与已编译的SFML二进制文件之间的版本不匹配引起的。我建议您确保更新SFML二进制文件或重新编译SFML。