/* 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 |