Как программно получить разрешение окна и разрешение системы в Linux?

"... Позвольте нам Сборка Компилятор... "

я был бы второй http://compilers.iecc.com/crenshaw/ @sasb. Забудьте покупать больше книг в настоящий момент.

, Почему? Инструменты & язык.

требуемым языком является Паскаль и если я помню, правильно основан на Turbo Pascal. Это именно так происходит, если Вы переходите в http://www.freepascal.org/ и загружаете компилятор Паскаля, все примеры работают прямо от страницы ~ http://www.freepascal.org/download.var , отличная вещь о Бесплатном Паскале - Вы, может использовать его почти безотносительно процессора или ОС, о которой можно заботиться.

, Как только Вы освоили уроки тогда, пробуют более усовершенствованное " Книга Дракона" ~ http://en.wikipedia.org/wiki/Dragon_book

10
задан gc . 20 July 2009 в 14:22
поделиться

4 ответа

В X11 вам нужно будет вызвать XGetWindowAttributes Xlib чтобы получить различную информацию об окне, включая размер и положение относительно родителя. В качестве примера того, как это используется, вы можете найти в Google "xwininfo.c".

Тем не менее, вероятно, вы собираетесь использовать более высокоуровневую структуру для программирования окон - и высока вероятность того, что в ней уже есть некоторые другие примитивы для этого, см. пример для Qt - так что вы можете дать немного больше информации по вопросу.

6
ответ дан 3 December 2019 в 18:35
поделиться

Инструмент командной строки xdpyinfo предоставляет вам эту информацию; как объясняет Эндрю Y, чтобы сделать это программно, вам нужно использовать Xlib.

0
ответ дан 3 December 2019 в 18:35
поделиться

Зависит:

6
ответ дан 3 December 2019 в 18:35
поделиться

Чтобы получить разрешение экрана, вы можете использовать расширение XRandR, как в xrandr источниках:

  SizeID        current_size;
  XRRScreenSize *sizes;
  dpy = XOpenDisplay (display_name);
  // ...
  root = RootWindow (dpy, screen);
  sc = XRRGetScreenInfo (dpy, root);
  current_size = XRRConfigCurrentConfiguration (sc, &current_rotation);
  sizes = XRRConfigSizes(sc, &nsize);
  for (i = 0; i < nsize; i++) {
    printf ("%c%-2d %5d x %-5d  (%4dmm x%4dmm )",
         i == current_size ? '*' : ' ',
         i, sizes[i].width, sizes[i].height,
         sizes[i].mwidth, sizes[i].mheight);
     // ...
  }

Вы можете увидеть вывод, набрав «xrandr» в вашем xterm.

Или, лучше, используйте Метод xdpyinfo :

Display *dpy;
// dpy = ...
int scr = /* ... */
printf ("  dimensions:    %dx%d pixels (%dx%d millimeters)\n",
        DisplayWidth (dpy, scr), DisplayHeight (dpy, scr),
        DisplayWidthMM(dpy, scr), DisplayHeightMM (dpy, scr));
9
ответ дан 3 December 2019 в 18:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: