簡體   English   中英

獲取Xlib中所有屏幕的編號

[英]Get numbers of all screens in Xlib

我已經搜尋了很長時間,但是我找不到關於如何獲取連接到計算機的每個屏幕的screen_number的任何信息。 在這里,我找到了一個宏列表,其中一些宏(例如ScreenOfDisplay(display,screen_number))使用了參數screen_number。 但是,沒有這樣的宏可以給我這些數字的列表(每個連接的屏幕一個)。 我知道如何獲取默認屏幕的數量(DefaultScreen())和所有屏幕的計數(ScreenCount()),但是其他屏幕呢? 我注意到默認屏幕的screen_number為0,盡管我只有一個屏幕連接到計算機,所以當有更多屏幕時,我無法真正測試會發生什么。 我認為可以以非常簡單的方式分配screen_number,即第一個屏幕的screen_number = 0,第二個屏幕的screen_number = 1,第三個屏幕的screen_number = 2,依此類推,但是正如我所說的...我無法測試,這是真的即使我有多個屏幕,我如何也可以確保它在所有計算機上都可以正常工作。請,如果你們中的任何一個對X11有更多的經驗,並且知道有關X11如何工作的所有細節,請告訴我我是否正確。

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])

您的源代碼( 2.2.1。Display Macros )提供了足夠的信息。 通常,默認屏幕號是0 ,例如,當連接到本地主機時,您可以使用:0.0XOpenDisplay文檔中所述

那是“通常”。 如果您運行VNC,通常它將在不同的顯示器上運行( 顯示的簡單連接字符串中的第一個0 )。

但是(閱讀文檔),當應用程序調用XOpenDisplay它將要求提供給定的屏幕號(X服務器可能/可能不接受):

screen_number
指定要在該服務器上使用的屏幕。 單個X服務器可以控制多個屏幕。 screen_number設置一個內部變量,如果您使用的是C以外的語言,則可以使用DefaultScreen()宏或XDefaultScreen()函數進行訪問(請參見“顯示宏” )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM