URL: https://linuxfr.org/forums/programmation-c--2/posts/xlib-et-aggrandissement-de-fenetre Title: Xlib et aggrandissement de fenetre... Authors: MuZu Date: 2006年06月02日T23:58:07+02:00 Tags: Score: 0 Bonjour :D Je sais pas si c'est très clair alors je mets une capture d'écran : [http://muzu.free.fr/probleme_xlib.jpg](http://muzu.free.fr/probleme_xlib.jpg) Voila, j'ai essayé des tonnes de trucs, passé quelques heures sur google mais j'ai toujours le même problème : quand je redimensionne la fenêtre (en passant par la bordure du gestionnaire de fenêtre), la bordure du wm s'agrandit bien comme il faut mais le contenu lui même de la fenêtre ne bouge pas et dans le nouvel espace est transparent! (même pas tout noir, quand on clicke a travers on passe sur la fenêtre visible en dessous ). mon code (utilise imlib2, réduit au minimum) #include "Imlib2.h" #include using namespace std; Display *disp; Window win; Visual *vis; Colormap cm; int depth; Imlib_Image buffer, image; int windowWidth = 50, windowHeight = 60; void updateWindow (int x, int y, int w, int h) { £spaces£ £/spaces£Imlib_Image updateBuffer = imlib_create_image (w, h); £spaces£ £/spaces£imlib_context_set_image (updateBuffer); £spaces£ £/spaces£imlib_blend_image_onto_image (buffer, 0, x, y, w, h, 0, 0, w, h); £spaces£ £/spaces£imlib_render_image_on_drawable (x, y); £spaces£ £/spaces£imlib_free_image (); } void redrawWindow () { £spaces£ £/spaces£if (buffer) £spaces£ £/spaces£{ £spaces£ £/spaces£imlib_context_set_image (buffer); £spaces£ £/spaces£imlib_free_image (); £spaces£ £/spaces£} £spaces£ £/spaces£imlib_context_set_cliprect (0, 0, windowWidth, windowHeight); //Ne change rien... £spaces£ £/spaces£buffer = imlib_create_image (windowWidth, windowHeight); £spaces£ £/spaces£imlib_context_set_image (image); £spaces£ £/spaces£int imageWidth = imlib_image_get_width (); £spaces£ £/spaces£int imageHeight = imlib_image_get_height (); £spaces£ £/spaces£imlib_context_set_image (buffer); £spaces£ £/spaces£imlib_blend_image_onto_image (image, 0, 0, 0, imageWidth, imageHeight, 0, 0, £spaces£ £/spaces£windowWidth, windowHeight); } int main (int argc, char **argv) { £spaces£ £/spaces£XEvent ev; £spaces£ £/spaces£disp = XOpenDisplay (NULL); £spaces£ £/spaces£vis = DefaultVisual (disp, DefaultScreen (disp)); £spaces£ £/spaces£depth = DefaultDepth (disp, DefaultScreen (disp)); £spaces£ £/spaces£cm = DefaultColormap (disp, DefaultScreen (disp)); £spaces£ £/spaces£win = XCreateSimpleWindow (disp, DefaultRootWindow (disp), £spaces£ £/spaces0,ドル 0, windowWidth, windowHeight, 0, 0, 0); £spaces£ £/spaces£XSelectInput (disp, win, ExposureMask | ResizeRedirectMask); £spaces£ £/spaces£XMapWindow (disp, win); £spaces£ £/spaces£imlib_context_set_display (disp); £spaces£ £/spaces£imlib_context_set_visual (vis); £spaces£ £/spaces£imlib_context_set_colormap (cm); £spaces£ £/spaces£imlib_context_set_drawable (win); £spaces£ £/spaces£image = imlib_load_image ("TigerAquaBlue.jpg"); £spaces£ £/spaces£redrawWindow (); £spaces£ £/spaces£for (;;) £spaces£ £/spaces£{ £spaces£ £/spaces£do £spaces£ £/spaces£{ £spaces£ £/spaces£XNextEvent (disp, &ev); £spaces£ £/spaces£switch (ev.type) £spaces£ £/spaces£{ £spaces£ £/spaces£case Expose: £spaces£ £/spaces£updateWindow (ev.xexpose.x, ev.xexpose.y, ev.xexpose.width, £spaces£ £/spaces£ev.xexpose.height); £spaces£ £/spaces£break; £spaces£ £/spaces£case ResizeRequest: £spaces£ £/spaces£if (ev.xresizerequest.width != windowWidth £spaces£ £/spaces£|| windowHeight != ev.xresizerequest.height) £spaces£ £/spaces£{ £spaces£ £/spaces£windowWidth = ev.xresizerequest.width; £spaces£ £/spaces£windowHeight = ev.xresizerequest.height; £spaces£ £/spaces£redrawWindow (); £spaces£ £/spaces£updateWindow (0, 0, windowWidth, windowHeight); £spaces£ £/spaces£} £spaces£ £/spaces£break; £spaces£ £/spaces£default: £spaces£ £/spaces£break; £spaces£ £/spaces£} £spaces£ £/spaces£} £spaces£ £/spaces£while (XPending (disp)); £spaces£ £/spaces£} £spaces£ £/spaces£return 0; } voilà, faut vraiment que j'utilise la xlib directement, comment je pourrais éviter ça?

AltStyle によって変換されたページ (->オリジナル) /