LINUX.ORG.RU

Ответ на: комментарий от Valeriy_Onuchin

попробовал. оно возвращает не реальные размеры а те которые указывались при создании

anonymous
()
Ответ на: комментарий от Valeriy_Onuchin

Ты не понял. Чел ССЗБ и сделал ResizeRedirect. Так не работает.
Держи пример проги. Запусти так, потом раскоменть ResizeRedirectMask| и сравни. Вывод значений - по любой кнопке, завершение - q.

#include <X11/Xlib.h>
#include <stdio.h>


int main (int argc, char * argv []) {
        Display * dpy = XOpenDisplay (NULL);
        Window rootwin = DefaultRootWindow (dpy);
        int scrn = DefaultScreen (dpy);
        Visual * vis = DefaultVisual (dpy, scrn);
        int depth = DefaultDepth (dpy, scrn);
        int iswork = 1;
        long evmask =
                StructureNotifyMask |
                KeyPressMask |
//              ResizeRedirectMask |
        0;
        XWindowAttributes wa;
        XSetWindowAttributes attr = {
                None,                           /* background pixmap */
                WhitePixel (dpy, scrn),         /* background pixel */
                CopyFromParent,                 /* border pixmap */
                0,                              /* border pixel */
                0,                              /* bit gravity */
                0,                              /* win gravity */
                0,                              /* backing store */
                0,                              /* planes to be preserved */
                0,                              /* value to use in restoring planes */
                False,                          /* saveunder */
                evmask,                         /* events to be saved */
                0,                              /* events that should not propagate */
                False,                          /* override redirect */
                None,                           /* colormap */
                None                            /* cursor to be displayed */
        };
        Window w = XCreateWindow (dpy, rootwin, 100, 100, 400, 300, 0, depth, InputOutput, vis, CWBackPixel | CWEventMask, &attr);
        XEvent ev;

        XMapWindow (dpy, w);

        while (iswork && !XNextEvent (dpy, &ev)) {
                if (KeyPress == ev.type) {
                        if (0x18 == ev.xkey.keycode) iswork = 0;
                        XGetWindowAttributes (dpy, w, &wa);
                        printf ("atributes reports: w=%i, h=%i\n", wa.width, wa.height);
                }
                if (ConfigureNotify == ev.type) {
                        printf ("width is %i, height is %i\n", ev.xconfigure.width, ev.xconfigure.height);
                }
        }

        printf ("leaving...\n");
        XUnmapWindow (dpy, w);
        XCloseDisplay (dpy);
        return 0;
}

bugmaker ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.