• # Une version qui marche

    Posté par (site web personnel) . En réponse au message Xlib et aggrandissement de fenetre.... Évalué à 1.

    Apres quelques tests voici une version qui fonctionne:


    #include <stdlib.h>
    #include <assert.h>
    #include <Xlib.h>
    #include <Imlib2.h>

    ...

    int
    main (int argc, char **argv)
    {

    XEvent ev;

    disp = XOpenDisplay (NULL);
    assert (disp != NULL);

    vis = DefaultVisual (disp, DefaultScreen (disp));
    depth = DefaultDepth (disp, DefaultScreen (disp));
    cm = DefaultColormap (disp, DefaultScreen (disp));

    win = XCreateSimpleWindow (disp, DefaultRootWindow (disp),
    0, 0, windowWidth, windowHeight, 0, 0, 0);

    XSelectInput (disp, win,
    KeyPressMask | ButtonPressMask | StructureNotifyMask |
    ExposureMask);

    XMapWindow (disp, win);

    imlib_context_set_display (disp);
    imlib_context_set_visual (vis);
    imlib_context_set_colormap (cm);
    imlib_context_set_drawable (win);

    image = imlib_load_image ("test.jpg");
    redrawWindow ();

    for (;;) {

    XNextEvent (disp, &ev);
    switch (ev.type)
    {
    case KeyPress:
    case ButtonPress:
    XCloseDisplay (disp);
    exit (EXIT_SUCCESS);

    case Expose:
    if (ev.xexpose.count == 0)
    updateWindow (ev.xexpose.x, ev.xexpose.y, ev.xexpose.width, ev.xexpose.height);
    break;

    case ConfigureNotify:
    windowWidth = ev.xconfigure.width;
    windowHeight = ev.xconfigure.height;
    redrawWindow ();
    break;
    }
    }
    return 0;
    }




    #include <stdlib.h>
    #include <assert.h>
    #include <Xlib.h>

    #include <Imlib2.h>

    int
    main (int argc, char **argv)
    {

    XEvent ev;

    disp = XOpenDisplay (NULL);
    assert (disp != NULL);

    vis = DefaultVisual (disp, DefaultScreen (disp));
    depth = DefaultDepth (disp, DefaultScreen (disp));
    cm = DefaultColormap (disp, DefaultScreen (disp));

    win = XCreateSimpleWindow (disp, DefaultRootWindow (disp),
    0, 0, windowWidth, windowHeight, 0, 0, 0);

    XSelectInput (disp, win,
    KeyPressMask | ButtonPressMask | StructureNotifyMask |
    ExposureMask);

    XMapWindow (disp, win);

    imlib_context_set_display (disp);
    imlib_context_set_visual (vis);
    imlib_context_set_colormap (cm);
    imlib_context_set_drawable (win);

    image = imlib_load_image ("test.jpg");
    redrawWindow ();

    for (;;) {

    XNextEvent (disp, &ev);
    switch (ev.type)
    {
    case KeyPress:
    case ButtonPress:
    XCloseDisplay (disp);
    exit (EXIT_SUCCESS);

    case Expose:
    if (ev.xexpose.count == 0)
    updateWindow (ev.xexpose.x, ev.xexpose.y, ev.xexpose.width, ev.xexpose.height);
    break;

    case ConfigureNotify:
    windowWidth = ev.xconfigure.width;
    windowHeight = ev.xconfigure.height;
    redrawWindow ();
    break;
    }
    }
    return 0;
    }


    Pour expliquer ton probleme je pense que quand tu redirige les evenements resize il doit y a avoir deux trois trucs a faire pour avertir
    la fenetre (win) de se changement de taille.