3.2.1 Η ΣΥΝΔΕΣΗ ΜΕ ΤΟ DISPLAY


Το πρώτο βήμα σε κάθε πρόγραμμα που χρησιμοποιεί τα Χ Windows είναι η σύνδεση με τον εξυπηρετητή (server), ή με άλλα λόγια με κάποια οθόνη (display). Στην οθόνη αυτή το πρόγραμμά μας θα ανοίγει τα παράθυρά του, θα σχεδιάζει και θα λαμβάνει είσοδο.

Τη σύνδεση με τον εξυπηρετητή την δημιουργεί η συνάρτηση XOpenDisplay. Η συνάρτηση XOpenDisplay παίρνει ένα όρισμα, μία συμβολοσειρά (string) που περιέχει το όνομα του display στο οποίο θέλουμε να συνδεθεί το πρόγραμμά μας. Το όνομα του display πρέπει να είναι στην μορφή που περιγράφηκε στο κεφάλαιο 2, δηλαδή host:display.screen. Στην περίπτωση που η συμβολοσειρά είναι κενή (NULL) η σύνδεση γίνεται με το εξ'ορισμού display (αυτό δηλαδή που ορίζει η μεταβλητή DISPLAY του φλοιού από τον οποίο ξεκινά η εφαρμογή μας). Η XOpenDisplay σε περίπτωση επιτυχούς σύνδεσης επιστρέφει ένα δείκτη σε μία δομή (structure) Display, αλλιώς επιστρέφει κενό (NULL). Η δομή Display περιέχει τις απαραίτητες πληροφορίες για τον εξυπηρετητή και την σύνδεση. Επιπλέον, στη συνέχεια, για καθ'όλη τη διάρκεια του προγράμματος ο δείκτης αυτός θα είναι το βασικό όρισμα σε κάθε συνάρτηση της Xlib που θα καλούμε και θα προσδιορίζει τον εξυπηρετητή που χρησιμοποιούμε. Ο ορισμός της δομής Display υπάρχει στο include file Xlib.h.

Το τμήμα του προγράμματος που κάνει την σύνδεση με τη χρήση της XOpenDisplay() μπορεί να γραφεί ως εξής:


    #include    
    #include    <Χ11/Xlib.h>
    .
    .
    .
    Display    *display;
    .
    .
    .
    if ( (display = XOpenDisplay( NULL )) == NULL )
    {
        fprintf( stderr,
            "Error: could not open connection on display %s .\n",
            XDisplayName( display ) );
        exit(1);
    }

Από την στιγμή που η εφαρμογή μας θα συνδεθεί με το display μπορούμε να ανακτήσουμε διάφορες χρήσιμες πληροφορίες για αυτό με τη χρήση συναρτήσεων της Xlib ή μακροεντολών που ορίζονται στα include files και κάνουν την ίδια ακριβώς δουλειά με άλλο τρόπο. Οι συναρτήσεις και οι μακροεντολές παίρνουν για όρισμα το δείκτη στο display (όπως αυτός προκύπτει από την XOpenDisplay) και επιστρέφουν την ζητούμενη τιμή. Τέτοιες συναρτήσεις (και μακροεντολές) είναι οι ακόλουθες:

Τέλος κατ' αντιστοιχία με την XOpenDisplay υπάρχει και η XCloseDisplay η οποία κλείνει την σύνδεση με τον εξυπηρετητή των Χ Windows. Η XCloseDisplay μπαίνει συνήθως στο τέλος του προγράμματος. Έτσι η λογική κατάληξη του αποσπάσματος κώδικα που προηγήθηκε είναι:

        .
        .
        .
        XCloseDisplay( display );
    }

[prev] [up] [next] [contents] [index]