Forritun í XCB/Fyrsta forritið
Þar sem við getum núna sótt upplýsingar um tenginguna þá er hægt að fara yfir það að búa til glugga.
Búa til glugga í XCB
breytaHver gluggi hefur auðkennistölu í X-gluggakerfinu sem er táknað með
typedef uint32_t xcb_window_t;
í XCB þar sem fallið xcb_generate_id()
er notað til að sækja nýja auðkennistölu:
xcb_window_t xcb_generate_id(xcb_connection_t *c);
og fallið xcb_create_window()
er svo notað til að búa til nýjan glugga (sjá XCreateWindow
í Xlib). Allir nýjir gluggar eru ósýnilegir til að byrja með og því þurfum við að nota fallið xcb_map_window()
til að varpa þeim á skjáinn.
Hér er forrit sem skilgreinir og birtir glugga með breidd 300 og hæð 220 á miðjum skjánum (með því að sækja width_in_pixels
og height_in_pixels
):
#include <unistd.h>
#include <xcb/xcb.h>
#define HAED 220
#define BREIDD 300
int main ()
{
xcb_connection_t *tenging;
xcb_screen_t *skjar;
xcb_window_t gluggi;
tenging = xcb_connect (NULL, NULL);
/* Sækja fyrsta skjáinn. */
skjar = xcb_setup_roots_iterator (xcb_get_setup (tenging)).data;
/* Biður um auðkenni fyrir gluggann okkar. */
gluggi = xcb_generate_id(tenging);
/* Skilgreinir gluggann. */
xcb_create_window (tenging, // Bendir í tenginguna
XCB_COPY_FROM_PARENT, // Dýpt skjásins (sama og rót)
gluggi, // Auðkenni gluggans
skjar->root, // Móðurgluggi
(skjar->width_in_pixels - BREIDD)/2, // X-staðsetning gluggans í dílum
(skjar->height_in_pixels - HAED)/2, // Y-staðsetning gluggans í dílum
BREIDD, HAED, // Breidd og hæð gluggans í dílum
4, // Þykkt gluggakarmsins í dílum
XCB_WINDOW_CLASS_INPUT_OUTPUT, // Klasi
skjar->root_visual, //
0, NULL); // Stafsía, ekki notuð fyrst um sinn
/* Varpar glugganum á skjáinn. */
xcb_map_window (tenging, gluggi);
/* Sér til þess að skipanirnar séu gefnar út áður en „pause()“ fallið keyrir svo glugginn birtist örugglega. */
xcb_flush (tenging);
pause (); /* kemur úr „unistd.h“ og lætur forritið bíða eftir Ctrl-C. */
xcb_disconnect (tenging);
return 0;
}
Glugginn að ofan hefur óskilgreindan bakgrunn sem er hægt að stilla með síðustu tveimur færibreytum xcb_create_window()
sem við skilgreindum sem 0
og NULL
. Glugginn ætti því að líta svona út:
Hægt er að loka glugganum með því að ýta á Ctrl-C.