C XLIB如何使窗口全屏显示?

C XLIB如何使窗口全屏显示?,c,linux,game-engine,xlib,game-development,C,Linux,Game Engine,Xlib,Game Development,我正在使用Xlib编写我自己的平台库(我知道是genius plays),但我无法在基于GNOME的DE上使用全屏。它可以在I3和Xfce上使用,但不能在GNOME或Unity上使用。这是我到目前为止所拥有的 XSizeHints*大小提示; 长提示=0; size_hints=XAllocSizeHints(); 如果(XGetWMSizeHints)(\u platform.display、\u window.window、size\u提示和提示, XInternAtom(_platform

我正在使用Xlib编写我自己的平台库(我知道是genius plays),但我无法在基于GNOME的DE上使用全屏。它可以在I3和Xfce上使用,但不能在GNOME或Unity上使用。这是我到目前为止所拥有的

XSizeHints*大小提示;
长提示=0;
size_hints=XAllocSizeHints();
如果(XGetWMSizeHints)(\u platform.display、\u window.window、size\u提示和提示,
XInternAtom(_platform.display,“WM_SIZE_HINTS”,False))==0){
看跌期权(“失败”);
} 
XLowerWindow(_platform.display,_window.window);
XUnmapWindow(_platform.display,_window.window);
XSync(_platform.display,False);
printf(“%ld\n”,提示);
XFree(大小提示);
原子原子[2]={XInternAtom(_platform.display,“_NET_WM_STATE_FULLSCREEN”,False),无};
交换财产(
_平台显示,
_窗,窗,
XInternAtom(_platform.display,“_NET_WM_STATE”,False),
XA_原子,32,取代,(无符号字符*)原子,1;
XMapWindow(_platform.display,_window.window);
XRaiseWindow(_platform.display,_window.window);
减去所有
XGetWMSizeHints
代码,此代码在其他WMs和DEs上运行良好。根据其他堆栈溢出问题,让GNOME全屏工作的方法是要么更改一些
WM-NORMAL\u HINT
值,要么完全删除它们(和)


为了执行这两种操作,我必须使用
XGetWMSizeHints
,但函数失败。我是否需要先为窗口创建属性,然后使用此函数?我应该在
XSizeHints
中设置哪些值?

我已经在我的环境中尝试了您的解决方案,并且效果良好


但我注意到的是,XGetWMSizehints的返回值在失败时为0,在成功时为非零,这意味着您的示例错误地打印了“失败”。

您可能需要询问与Gnome相关的列表,因为它可能与Gnome Desktop控制基本Xwindow的方式有关。您可能会在这里得到答复,但这是一个与桌面本身相关的相当狭窄的问题。你可以试试
gnome-list@gnome.org