有沒有辦法使用 C 透過 Xlib 取得顯示器的螢幕尺寸?我嘗試參考 X.org 文件(https://tronche.com/gui/x/xlib/display/screen-information.html),它只給我不接受整數的宏,所以我不知所措。
我專門這樣使用這些函數:
int sx;
int sy;
XWidthOfScreen(sx);
XWidthOfScreen(sy);
...
move_window(sx / 4)
move_window(sy / 4)
我是 C 程式設計新手,正在開發我的第一個專案。
答案1
這是一個簡單的範例,它將列印顯示大小並將其運行的終端模擬器的視窗(如果在WINDOWID
環境變數中正確設定)移至寬度/ 4,高度/ 4:
#include <X11/Xlib.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
int main(int ac, char **av){
char *wid; Display *dpy; Window w;
int width, height, snum;
if(!(dpy = XOpenDisplay(0)))
errx(1, "cannot open display '%s'", XDisplayName(0));
snum = DefaultScreen(dpy);
width = DisplayWidth(dpy, snum);
height = DisplayHeight(dpy, snum);
printf("display size is %d x %d\n", width, height);
if((wid = getenv("WINDOWID")) && (w = strtoul(wid, 0, 0))){
XMoveWindow(dpy, w, width / 4, height / 4);
XSync(dpy, False);
}
return 0;
}
我的建議是複製X11 程式設計手冊,這是一個單頁 html,您可以搜尋它並包含有關 X11 程式設計的所有內容。
請注意,可能有更友善或可移植的程式庫,例如 gtk、qt、sdl 等。