如何将窗口始终放在SFML的顶部
How to make window always on top in SFML?
我正在尝试使用sfml的窗口始终停留在顶部。如何使用SFML实现这一目标?我四处搜索,但无济于事。
" program"是屏幕中间的一个小红点,可以模仿十字准线,我需要它在所有内容中,因为真实的游戏将在后台(游戏没有十字路口,只有目击)。
我唯一的想法是使用SFML的方法getSystemHandle()
,这将为我提供特定于窗口的操作系统手柄。我正在使用gnome和X使用Ubuntu 16.04,并且我不太确定如何获得句柄后如何编码该功能。
当前版本的SFML不可能,但是由于您只需要X,因此您只需使用此旧/拒绝的拉请请求中的摘要就可以自己实现它。<<<<<<<<<<<<<<
void WindowImplX11::setTopmost(bool topmost)
{
static Atom wmStateAbove = XInternAtom(m_display, "_NET_WM_STATE_ABOVE", 1);
static Atom wmNetWmState = XInternAtom(m_display, "_NET_WM_STATE", 1);
if (wmStateAbove)
{
XClientMessageEvent emsg;
memset(&emsg, 0, sizeof(emsg));
emsg.type = ClientMessage;
emsg.window = m_window;
emsg.message_type = wmNetWmState;
emsg.format = 32;
emsg.data.l[0] = topmost;
emsg.data.l[1] = wmStateAbove;
XSendEvent(m_display, RootWindow(m_display, m_screen), false, SubstructureRedirectMask | SubstructureNotifyMask, (XEvent*)&emsg);
}
}
您必须独自检索m_display
,m_window
等。
相关文章:
- SFML纹理像播放器
- 如何使用AngelScript注册SFML Vector2运算符
- 如何修复sfml c++代码编译错误
- SFML library: http request
- 落砂模拟碰撞检测C++和SFML
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- SFML RenderWindow打开窗口需要很长时间
- 矢量下标超出SFML游戏中的范围
- 获取 SFML 窗口的 HWND 和高可用性?
- 程序顶部的声明与定义(最佳实践)
- 将 Vulkan 与 SFML 结合使用?
- SFML 文本未绘制在窗口上
- SFML 碰撞永远不会在我的系统中注册
- 使用对象数组对 SFML 进行动画处理
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 如何使用 SFML 在贪吃蛇游戏中定义游戏结束?
- 如何通过多类"Union variable" (sfml) 使用轮询事件
- 1d.exe找不到SFML文件?
- 用SFML在屏幕顶部(Windows)绘制
- 如何将窗口始终放在SFML的顶部