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

 C Discussion :

C sur Linux, même chose que windows?


Sujet :

C

  1. #21
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 397
    Points : 23 761
    Points
    23 761
    Par défaut
    Citation Envoyé par Matthieu57b1 Voir le message
    J'ai lu le document de xwindows mais ce n'est pas vraiment ce que vous dites. On parle d'un système client-serveur... ?
    X-Window est le système graphique en usage sur pratiquement tous les Unix et assimilés. Dans un tel environnement, la gestion graphique est complètement séparée et indépendante du système. Elle est également complètement facultative.

    X-Window est donc une application à part entière qui va se charger de gérer un ou plusieurs écrans graphiques. Tu peux également en lancer plusieurs instances, bien qu'elles soient gourmandes en mémoire.

    Cette application est donc un serveur complètement indépendant du système et des autres applications : celles-ci se connectent au serveur X et lui envoient des ordres que le serveur traduit à l'écran. Dans l'absolu, il n'est même pas nécessaire que ces applications tournent sur la même machine que le serveur X. Par exemple, tu peux lancer OpenOffice sur ton PC de bureau et lui demander de s'afficher sur l'écran de ton laptop, via le réseau.

    En outre, le serveur X va se charger de gérer des fenêtres, de les superposer, etc. mais elles sont, par défaut, complètement transparentes et ne sont ornées d'aucune décoration. C'est, là encore, une application dédiée et indépendante appelée Window Manager qui va se charger de surveiller l'activité du serveur et décorer les fenêtres quand elles sont créées. De fait, tu peux tuer cette application sans fermer les autres. Tu vois alors les fenêtres se « déshabiller » sans que leur contenu soit perdu et sans perturber les applications qui sont derrière.

    C'est sur cette base que s'appuient les autres bibliothèques graphiques de plus haut niveau. Tu peux utiliser la X-Lib directement si cela te chante (personnellement, j'aime bien) mais cela peut vite devenir rébarbatif.

    Est-ce que vous pourriez me donner un exemple de code qui affiche une fenêtre vide sans rien dessu?
    En voici un :

    Code C : 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
    #include <stdio.h>
    #include <X11/Xlib.h>
    #include <errno.h>
     
    int main (void)
    {
        Display             *   dpy     = NULL;
        Window                  win;
        XEvent                  ev;
        XSetWindowAttributes    swa;
     
        dpy=XOpenDisplay("");
        if (dpy!=NULL)
        {
            win = XCreateSimpleWindow (dpy,                     /* Connexion vers le serveur */
                                       DefaultRootWindow(dpy),  /* Fenêtre racine parente    */
                                        10, 10,                 /* Coin sup. gauche en 10,10 */
                                       320,200,                 /* Taille : 320 x 200        */
                                       1,                       /* Epaisseur bordure : 1 px  */
                                       0xff0000,                /* Bordure rouge             */
                                       0x0000ff);               /* Fond bleu                 */
     
            swa.event_mask = ButtonPressMask;                   /* On change certains attri- */
            XChangeWindowAttributes   (dpy,                     /* buts de la fenetre. Juste */
                                       win,                     /* le masque des événements, */
                                       CWEventMask,             /* en fait, et parmi eux, on */
                                       &swa);                   /* ne garde que ButtonPress. */
     
            XMapWindow (dpy,win);                               /* Affiche la fenêtre        */
     
            do
            {
                XNextEvent (dpy,&ev);                           /* Attend le prochain evenement */
            }
            while (ev.type != ButtonPress);                     /* Continue jusqu'à un clic     */
     
            XDestroyWindow  (dpy,win);                          /* Tue la fenêtre               */
            XCloseDisplay   (dpy);                              /* Referme la connexion         */
        }
        else perror ("Connexion au serveur X impossible");
     
        return 0;
    }

  2. #22
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    J'ai lu le document de xwindows mais ce n'est pas vraiment ce que vous dites. On parle d'un système client-serveur... ?
    Tu veux dire t'as lu que l'intro je suppose. Serveur : c'est le système X. Client : c'est ton application. Ton application (le client) utilise des fonctionnalités proposées par un serveur (le système X), on dit que t'es dans un environnement client-serveur .

    Est-ce que vous pourriez me donner un exemple de code qui affiche une fenêtre vide sans rien dessu?
    (...)
    Quelles sont les fonctions pour faire une fenêtre, des bouttons, des menus déroulant.
    Continue ta lecture .

    Et auriez-vous la documention de ce système de graphique?
    Je t'en ai déjà proposé un, et c'est l'un des meilleurs sur tout le net. Pour la documentation de référence, tu as les man pages bien sûr (mais les man pages ne remplacent pas un bon tutoriel, et un bon tutoriel ne remplace pas les man pages, il faut les deux).

  3. #23
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Cette application est donc un serveur complètement indépendant du système et des autres applications : celles-ci se connectent au serveur X et lui envoient des ordres que le serveur traduit à l'écran. Dans l'absolu, il n'est même pas nécessaire que ces applications tournent sur la même machine que le serveur X. Par exemple, tu peux lancer OpenOffice sur ton PC de bureau et lui demander de s'afficher sur l'écran de ton laptop, via le réseau.

    Bon alors j'avais bien lu, c'est pour cela que je trouvais le tutoriel un peu bisard. Merci pour l'info et le code, je vais aller esseyer ça tento.

    J'ai tout de même tenté de compiler avec X11/Xlib.h et ça n'avait pas fonctionner. Peut-être que le reste du code-source était pas correct. Je vais le refaire tento et je vais voir si ça fonctionne.

  4. #24
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Melem Voir le message
    Tu veux dire t'as lu que l'intro je suppose. Serveur : c'est le système X. Client : c'est ton application. Ton application (le client) utilise des fonctionnalités proposées par un serveur (le système X), on dit que t'es dans un environnement client-serveur .
    Si vous lisez le message de Obsidian, vous allez voir qu'il dit la même chose que moié.



    Citation Envoyé par Melem Voir le message
    Je t'en ai déjà proposé un, et c'est l'un des meilleurs sur tout le net. Pour la documentation de référence, tu as les man pages bien sûr (mais les man pages ne remplacent pas un bon tutoriel, et un bon tutoriel ne remplace pas les man pages, il faut les deux).

    Je me souviens de l'aide dans l'IDE de delphie, c'était pas male différent. On parle d'un format de définition comme pour man. Donc chaque fonction est expliqué dans un cadre précis.

  5. #25
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 397
    Points : 23 761
    Points
    23 761
    Par défaut
    Citation Envoyé par Matthieu57b1 Voir le message
    J'ai tout de même tenté de compiler avec X11/Xlib.h et ça n'avait pas fonctionner. Peut-être que le reste du code-source était pas correct. Je vais le refaire tento et je vais voir si ça fonctionne.
    Les *.h contiennent les spécifications d'une bibliothèque, de manière à ce que ton compilateur puisse bâtir une application qui y sera liée ultérieurement. C'est au moment où tu compiles ton programme qu'il faut spécifier la bilbiothèque à utiliser :

    Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
    $ gcc -o programme programme.c -lX11

    Le cas échéant, il se peut que tu aies besoin de préciser l'emplacement sur le disque de cette bibliothèque avec -L (majuscule).

  6. #26
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Obsidian Voir le message

    Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
    $ gcc -o programme programme.c -lX11

    Le cas échéant, il se peut que tu aies besoin de préciser l'emplacement sur le disque de cette bibliothèque avec -L (majuscule).

    Merci, c'est ça qui me manquait je crois.

Discussions similaires

  1. C sur mac, même chose que sur pc?
    Par Nitrox06 dans le forum Débuter
    Réponses: 4
    Dernier message: 09/05/2009, 16h06
  2. [footnote] Affichage du n° sur la même page que la note
    Par Panthère Bleue dans le forum Mise en forme
    Réponses: 3
    Dernier message: 19/06/2008, 15h28
  3. Peut on faire avec JDBC la même chose que PDO en PHP ?
    Par arnaudperfect dans le forum JDBC
    Réponses: 1
    Dernier message: 13/09/2007, 08h38
  4. MFC, son équivalent sur des plateformes autre que Windows
    Par uranium-design dans le forum Visual C++
    Réponses: 7
    Dernier message: 03/11/2006, 16h32
  5. Comment fermer l'application en même temps que Windows ?
    Par semaj_james dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2004, 22h17

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