|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: H T
Length: 5656 (0x1618) Types: TextFile Names: »HelloWorld.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─⟦this⟧ »./X.V10R4/Toolkit/Xr/usr/contrib/HelloWorld/HelloWorld.c«
#include <X/Xlib.h> /* X library include file */ #include <Xr/defs.h> /* X-ray definitions include file */ #include <Xr/types.h> /* X-ray types include file */ #include "HelloWorld.h" #include "smile.h" #include "frown.h" main (argc, argv) int argc; char * argv[]; { Display * displayPtr; /* Ptr to the opened display strucuture */ xrWindowData windowData; /* Structure used to set the window data */ xrEvent input; /* Structure used to gather input */ extern xrPFI DrawWindow(); /* The redraw routine for the main window */ Bitmap bitmap; /* Used to create the raster bitmap id's */ Pixmap pixmap; /* Used to create the raster pixmap id's */ /* * Open the display and initialize X-ray. */ if ((displayPtr = XOpenDisplay (argv[1])) == 0) { printf ("Could not open the display\n"); exit(); } if (XrInit (NULL) == FALSE) { printf ("Could not initialize X-ray\n"); exit(); } /* * Create, map, register and select input for the main window. */ if ((windowId = XCreateWindow (RootWindow, 10, 10, 330, 120, xrBorderWidth, xrWindowForeground, xrWindowBackground)) == 0) { printf ("The window create failed\n"); exit(); } XMapWindow (windowId); XrSetRect (&windowData.windowRect, 10, 10, 100, 100); windowData.foreTile = xrWindowForeground; windowData.backTile = xrWindowBackground; XrInput (windowId, MSG_ADDWINDOW, &windowData); XSelectInput (windowId, ButtonPressed | ButtonReleased | KeyPressed | ExposeWindow); /* * Call the function used to redraw the window to get it drawn. */ DrawWindow (windowId, MSG_NEW, NULL); /* * Set up a cursor for the window using the default cursor. */ XDefineCursor (windowId, xrDefaultCursor); /* * Set up and create the menu. */ menu = XrMenu (NULL, MSG_NEW, &menuInfo); XrMenu (menu, MSG_ACTIVATEMENU, windowId); /* * Set up the rasters for the two message boxes. */ bitmap = XStoreBitmap (smile.width, smile.height, smile.raster); pixmap = XMakePixmap (bitmap, xrBackgroundColor, xrForegroundColor); niceMsgInfo.rasterId = pixmap; niceMsgInfo.rasterWidth = smile.width; niceMsgInfo.rasterHeight = smile.height; bitmap = XStoreBitmap (frown.width, frown.height, frown.raster); pixmap = XMakePixmap (bitmap, xrBackgroundColor, xrForegroundColor); meanMsgInfo.rasterId = pixmap; meanMsgInfo.rasterWidth = frown.width; meanMsgInfo.rasterHeight = frown.height; /* * Set up and input loop. */ while (1) { if (XrInput (0, MSG_BLKHOTREAD, &input) != FALSE) { if (input.type & XrXRAY && input.inputType == XrMENU) { switch (input.value3) { case 0: /* Show the Nice Message Box */ XrMessageBox (&niceMsgInfo, MSG_EDIT, &input); break; case 1: /* Show the Mean Message Box */ XrMessageBox (&meanMsgInfo, MSG_EDIT, &input); break; case 3: /* Exit */ exit(); break; } } } } } /************************************************************************ * * DrawWindow (window, message, data) * This function handles the initial drawing of the window. * which occurs if the message is set to MSG_DRAW. * It also handles the redrawing of the window when an exposure * event occurs. Message will contain MSG_REDRAW. * ************************************************************************/ xrPFI DrawWindow (window, message, data) Window window; INT32 message; XExposeEvent * data; { xrWindowEvent exposeEvent[1]; xrWindowFunctInfo exposeFunct; xrEvent nullEvent; /* * Set up a switch to handle the two possible messages. */ switch (message) { case MSG_NEW: /* * Create the title bar editor. */ titleBarInfo.editorWindowId = windowId; titleBar = XrTitleBar (NULL, MSG_NEW, &titleBarInfo); /* * Set up the structure neccessary to have this function * called automatically upon an exposure event. */ exposeEvent[0].inputType = ExposeWindow; exposeEvent[0].inputCode = 0; exposeFunct.processFlag = TRUE; exposeFunct.funct = (xrPFI) DrawWindow; exposeFunct.instance = (INT32) windowId; exposeFunct.message = MSG_REDRAW; exposeFunct.eventCount = 1; exposeFunct.eventList = &exposeEvent[0]; XrInput (windowId, MSG_ADDWINDOWFUNCT, &exposeFunct); case MSG_REDRAW: /* * Write the text into the window. */ XText (window, 20, 50, "Press the Menu Button to display the menu.", 42, xrBaseFontInfo->id, xrForegroundColor, xrBackgroundColor); XText (window, 50, 50 + xrBaseFontInfo -> height + 5, "(Default: Right Button Down)", 28, xrBaseFontInfo->id, xrForegroundColor, xrBackgroundColor); /* * Redraw the title bar. */ XrTitleBar (titleBar, MSG_REDRAW, XrREDRAW_ALL); /* * Push a null event to be returned to the application. */ nullEvent.type = XrXRAY; nullEvent.inputType = NULL; XrInput (0, MSG_PUSHEVENT, &nullEvent); break; } }