/* wattrib.c */
/* changement des attributs d'une fenetre */
#include <stdio.h>
#include <X11/Xlib.h>
GC gc;
Display *display;
int screen;
Window win, root;
unsigned long white_pixel, black_pixel;
XSetWindowAttributes attrib;
unsigned long masq_attrib;
main() {
if ((display = XOpenDisplay ("")) == NULL) {
fprintf (stderr, "Can't open Display\n");
exit (1);
}
gc = DefaultGC (display, screen);
screen = DefaultScreen (display);
root = RootWindow (display, screen);
white_pixel = WhitePixel (display, screen);
black_pixel = BlackPixel (display, screen);
win = XCreateSimpleWindow (display, root,
0, 0, 100, 90, 2, black_pixel, white_pixel);
XSelectInput (display, win, ExposureMask | ButtonPressMask);
XStoreName (display, win, "wattrib");
masq_attrib = CWBackingStore;
attrib.backing_store = Always;
XChangeWindowAttributes (display, win, masq_attrib, &attrib);
XMapWindow (display, win);
for (;;) {
XEvent ev;
XNextEvent (display, &ev);
switch (ev.type) {
case Expose :
XDrawString (display, win, gc, 10, 30, "coucou !", 8);
break;
case ButtonPress :
XDrawString (display, win, gc, ev.xbutton.x, ev.xbutton.y, "ici", 3);
default :
break;
}
}
}
Cliquez pour écrire içi, puis masquez la fenêtre. Démasquez-la !
Les attributs d'une fenêtre :
XSetWindowAttributes attrib; attrib est la structure des caractéristiques
de la fenêtre, structure partiellement renseignée.
unsigned long masq_attrib; est le masque des attributs renseignés
dans la structure attrib.
Si vous affectez background_pixel d'attrib avec un pixel-couleur de fond,
ajoutez le "drapeau" CWBackPixel au masque masq_attrib. Par contre,
le champ background_pixmap ne sera pas renseigné.
Le BackingStore est assuré sur certaines stations X : elles mémorisent les parties cachées des fenêtres dans une mémoire d'arrière plan. Néanmois, vos applications doivent obligatoirement pouvoir s'en passer.
XChangeWindowAttributes modifie les attributs sélectionnés dans le masque masq_attrib aux valeurs indiquées dans attrib.
Votre programme change la couleur d'arrière plan (noir/blanc) de sa fenêtre selon la lettre tapée n(oir) ou b(lanc).
| programme suivant | index général | fonctions de la XLib | événements | types dans XLib |