IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

[Débutant en Linux] Impossible d'ouvrir deux fenêtres simultanément


Sujet :

Linux

  1. #1
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut [Débutant en Linux] Impossible d'ouvrir deux fenêtres simultanément
    Bonjour à tous,

    J'ai un petit problème en programmation X11 sous LINUX (Code::blocks et Ubuntu 10.10 64 bits). Lorsque je teste un petit programme "Hello world", tout va bien. Mais je voudrais avoir plusieurs fenêtres. Et lorsque j'ouvre deux fenêtres simultanément, la fermeture de l'une provoque un exit du programme. Dans la fenêtre console, j'ai le message suivant:

    fatal IO error 11 (Resource temporarily unavailable) on X server
    Il y a un autre post qui ressemble (ici) mais sans solution. Même chose dans Google: beaucoup de références à cette erreur, mais pas de solutions.

    Y a-t-il un moyen d'ouvrir et de fermer indépendamment deux fenêtres ? Ou de contourner ce problème ? J'ai essayé avec XSetCloseDownMode, mais sans succès (la fenêtre reste bien à l'écran, mais elle est inactive puisque l'application a crashé).

    Mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    /*
     * xsimple : Affiche une chaine dans une fenetre X...
     */
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define _X_SENTINEL(x)
    #include <X11/Xlib.h>
     
    GC	gc;
    Display	*display;
    int	screen;
    Window	win1, win2, root;
    unsigned long white_pixel, black_pixel;
     
     
    /*
     * fonction associee a l'evenement EXPOSE
     */
     
    void expose (Window win)
    {
        XDrawString (display, win, gc, 10, 30, "Hello, world !", 14);
    }
     
     
    /*
     * programme principal
     */
     
    int main(int ac, char **av) {
        char *dpyn = NULL;
     
        /* selection du display en ligne */
        if (ac == 3) {
            if (strcmp (&av[1][1], "display") == 0) {
                dpyn = av[2];
            }
            else {
                fprintf (stderr, "Usage:	xsimple [-display display_name]\n");
                exit (1);
            }
        }
     
        if ((display = XOpenDisplay (dpyn)) == NULL) {
            fprintf (stderr, "Can't open Display\n");
            exit (1);
        }
     
    		// XSetCloseDownMode(display, RetainTemporary /*RetainPermanent*/);
     
        screen = DefaultScreen (display);
        gc = DefaultGC (display, screen);
        root = RootWindow (display, screen);
        white_pixel = WhitePixel (display, screen);
        black_pixel = BlackPixel (display, screen);
     
     
        win1 = XCreateSimpleWindow (display, root, 0, 0, 200, 100, 2, black_pixel, white_pixel);
        win2 = XCreateSimpleWindow (display, root, 300, 0, 200, 100, 2, black_pixel, white_pixel);
     
        XSelectInput (display, win1, ExposureMask);
        XSelectInput (display, win2, ExposureMask);
     
        XStoreName (display, win1, "xsimple 1");
        XMapWindow (display, win1);
     
        XStoreName (display, win2, "xsimple 2");
        XMapWindow (display, win2);
     
     
        for (;;) {
            XEvent ev;
     
            XNextEvent (display, &ev);
     
            switch (ev.type) {
     
            case Expose :
     
                expose (ev.xany.window);
                break;
     
            default :
     
              break;
     
            }
        }
    }

  2. #2
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut
    Pourquoi tu n'utilise pas une bibliothèque de plus haut niveau ? Comme Gtk ou Qt.
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Il est vrai qu'il faut préciser la bibliothèque graphique que tu utilises !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Recherche du travail
    Inscrit en
    Août 2004
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Recherche du travail

    Informations forums :
    Inscription : Août 2004
    Messages : 561
    Points : 1 320
    Points
    1 320
    Par défaut
    @troumad : Au vu du code source, il utilise Xlib.
    Avoir un regard neutre sur notre vie dénuée de sens, c'est la voir tel un ignorant
    ------------------------------------------------------------------------------------------------------

  5. #5
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Citation Envoyé par Senaku-seishin Voir le message
    Pourquoi tu n'utilise pas une bibliothèque de plus haut niveau ? Comme Gtk ou Qt.
    Je ne sais pas pourquoi, mais celle-ci je l'attendais: "Dis-moi de quoi tu as besoin, je te dirais comment t'en passer"...

    Je n'utilise ni Gtk ni Qt parce que je cherche justement à faire une librairie graphique de haut niveau qui soit une alternative à celles-là (FreeVCL pour Linux, pour être exact).

    Citation Envoyé par troumad Voir le message
    Il est vrai qu'il faut préciser la bibliothèque graphique que tu utilises !
    X11, XLib ou XWindow (je n'ai jamais su quel était le nom officiel), et Gnome.

Discussions similaires

  1. Est-il possible d'ouvrir deux fenêtres simultanément ?
    Par Go'Gaule dans le forum Débuter
    Réponses: 2
    Dernier message: 18/08/2011, 10h50
  2. Réponses: 0
    Dernier message: 19/02/2010, 17h43
  3. Réponses: 5
    Dernier message: 23/01/2009, 16h22
  4. [Lazarus] Ouvrir deux fenêtres successivement
    Par nnniii dans le forum Lazarus
    Réponses: 2
    Dernier message: 09/04/2007, 19h02
  5. impossible d'ouvrir deux recordset sur la meme connection ?
    Par requiemforadream dans le forum ASP
    Réponses: 3
    Dernier message: 28/04/2005, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo