C를 사용하여 Xlib를 통해 현재 화면 크기 가져오기

C를 사용하여 Xlib를 통해 현재 화면 크기 가져오기

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 프로그래밍 매뉴얼는 검색할 수 있고 X11 프로그래밍에 대한 모든 것을 포함하는 단일 페이지 HTML입니다.

gtk, qt, sdl 등과 같이 더 친숙하거나 이식 가능한 라이브러리가 있을 수 있습니다. libX11을 직접 사용하는 대신 이들 중 하나를 사용할 수 있습니다.

관련 정보