Τη σύνδεση με τον εξυπηρετητή την δημιουργεί η συνάρτηση
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); }
XOpenDisplay
)
και επιστρέφουν την ζητούμενη τιμή. Τέτοιες συναρτήσεις (και μακροεντολές)
είναι οι ακόλουθες:
Window XDefaultRootWindow( Display* ),
Window DefaultRootWindow( Display* )
int XDefaultScreen( Display* ),
int DefaultScreen( Display* )
int XDefaultDepth( Display*, int ),
int DefaultDepth( Display*, int )
XDefaultScreen
.
int XDisplayWidth( Display*, int ),
int XDisplayHeight( Display*, int ),
int DisplayWidth( Display*, int ),
int DisplayHeight( Display*, int )
XDefaultDepth
.
char *XDisplayString( Display* ),
char *DisplayString( Display* )
XOpenDisplay
υπάρχει και η
XCloseDisplay
η
οποία κλείνει την σύνδεση με τον εξυπηρετητή των Χ Windows. Η XCloseDisplay
μπαίνει συνήθως στο τέλος του προγράμματος. Έτσι η λογική κατάληξη του
αποσπάσματος κώδικα που προηγήθηκε είναι:
. . . XCloseDisplay( display ); }