Taille fenetre X11

Fermé
prqp - 29 juin 2014 à 11:57
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 29 juin 2014 à 21:05
Bonjour,

Lorsqu'on créer une fenetre avec X11 : win = XCreateSimpleWindow(display, root, posx, posy, width, height, larg, pblack, pwhite), comment je fais pour dire que la fenetre doit prendre toute la taille de mon écran ?
NB : les noms de variables c'est les miens, mais je suppose que vous comprenez. Le width et height sert à indiquer la taille de la fenetre. Et je voudrais que width = taille écran en x et height = taille ecran en y

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
29 juin 2014 à 21:05
'lut
Display *display;
[...]
Screen *screen = XDefaultScreenOfDisplay(display);
int posx = 0, posy = 0;
int width = XWidthOfScreen(screen);
int height = XHeightOfScreen(screen);
[...]
Window win = XCreateSimpleWindow(display, root, posx, posy, width, height, larg, pblack, pwhite),

Ceci créé une fenêtre de la taille de ton écran, ceci dit elle ne sera pas plein écran, il faut demander au Window Manager de le faire:
Atom wm_state = XInternAtom(display, "_NET_WM_STATE", false);
Atom fullscreen = XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", false);
XEvent xev;
memset(&xev, 0, sizeof(xev));
xev.type = ClientMessage;
xev.xclient.window = win;
xev.xclient.message_type = wm_state;
xev.xclient.format = 32;
xev.xclient.data.l[0] = 1;
xev.xclient.data.l[1] = fullscreen;
xev.xclient.data.l[2] = 0;
// On affiche la fenêtre
XMapWindow(display, win);
// On avertit le WM
XSendEvent (display, XDefaultRootWindow(display), false,
				SubstructureRedirectMask | SubstructureNotifyMask, &xev);
// On vite le tampon des messages (donc avertir réellement le WM)
XFlush(display);
0