我已经搜索了很长时间,而且我无法找到有关如何为连接到计算机的每个屏幕获取screen_number的任何信息。 Here我找到了一个宏列表,其中一些(例如ScreenOfDisplay(display,screen_number))使用了参数screen_number。然而,没有这样的宏可以给我一个这些数字的列表(每个连接屏幕一个)。我知道如何获取默认屏幕的数量(DefaultScreen())和所有屏幕的数量(ScreenCount()),但其他屏幕怎么样?我注意到默认屏幕的screen_number是0,虽然我只有一个屏幕连接到我的电脑,所以我无法测试当有更多屏幕时会发生什么。我认为screen_number可以用一个非常简单的方式分配,第一个屏幕是screen_number = 0,第二个是screen_number = 1,第三个是screen_number = 2,依此类推但是我说...我不能测试天气这是真的,即使我有多个屏幕,我怎么能确定它适用于所有计算机。如果你们中的任何人有更多的X11经验并且知道它的工作原理的详细信息,请告诉我是否我是对的。
答案 0 :(得分:3)
ScreenCount(dpy)
宏和int XScreenCount(Display*)
功能都返回连接到显示器的屏幕数。有效屏幕编号为0到ScreenCount(dpy)-1
。 Xlib.h
中的宏确认:
#define ScreenCount(dpy) (((_XPrivDisplay)dpy)->nscreens)
#define ScreenOfDisplay(dpy, scr) (&((_XPrivDisplay)dpy)->screens[scr])
答案 1 :(得分:1)
您的来源(2.2.1. Display Macros)提供了足够的信息。通常,默认屏幕编号为0
,例如,当连接到本地主机时,您可以使用:0.0
文档中指示的0
。
那是“正常”。如果你运行VNC,通常 在不同的显示器上运行(显示的简单连接字符串中的第一个XOpenDisplay
)。
但是(阅读文档),当应用程序调用{{1}}时,它会询问给定的屏幕号(X服务器可能/可能不会遵守):
<强> screen_number 强>
指定要在该服务器上使用的屏幕。多个屏幕可以由单个X服务器控制。 screen_number设置一个内部变量,如果您使用的是C语言以外的语言,请使用XOpenDisplay宏或DefaultScreen()函数访问该内部变量(请参阅XDefaultScreen())。