Listing 1 (xaw1.c)

/*
 *      xaw1.c
 *      Athena Widget test Program
 *      using Athena Widgets
 *
 *      NOTE: If you are compiling under Release 4
 *      of X, be sure to define X11R4.
 *
 *      Written for C Users Journal
 *
 */

#include <stdio.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>

/*
 *      Comment out if you are running
 *      on a system earlier than
 *      Release 4
 */
#define X11R4

/*
 *      Release 4 has Athena include
 *      files in new places.
 */

#ifdef X11R4
#include <X11/Xaw/Command.h>
#include <X11/Xaw/Paned.h>
#include <X11/Xaw/Label.h>

#else   /* older than Release 4 */

#include <X11/Command.h>
#include <X11/Paned.h>
#include <X11/Label.h>
#endif

/* ARGSUSED */
void quit_callback( widget, client_data, call_data )

Widget widget;
caddr_t client_data;
caddr_t call_data;

/*
 *      Callback function to quit program.
 *      We could close the connection to
 *      the X server here, or just call exit().
 */

{       /* quit_callback */

       exit( 0 );

}       /* quit_callback */

main( argc, argv )

int     argc;

char    *argv[];

{       /* main */
       Widget          parent;
       Arg             args[20];
       int             n;
       Widget          pane_widget, quit_widget;
       Widget          label_widget;

       /*
        * Set up top-level shell widget
        */
       parent = XtInitialize( argv[0],
                    "Xaw1", NULL,
                    0, &argc, argv );

       /*
        * Set up pane to control whole application
        */
       n = 0;
       pane_widget = XtCreateManagedWidget( "pane",
                    panedWidgetClass,
                    parent, args, n );

       /*
        * Set up command widget to
        * act as a push button
        */
       n=0;
       quit_widget = XtCreateManagedWidget( "quit",
                    commandWidgetClass,
                    pane_widget, args, n );

        /*
        * Set up a callback function
        * to be called whenever
        * the command push button is
        * "activated".
        */
       XtAddCallback( quit_widget, XtNcallback,
              quit_callback, (caddr_t) NULL );

       /*
        * Set up label widget
        */
       n = 0;
       XtSetArg( args[n], XtNlabel, "This is a label." );
n++;

       label_widget = XtCreateManagedWidget( "label",
                    labelWidgetClass,
                    pane_widget, args, n );

       /*
        * Map widgets and handle events
        */
       XtRealizeWidget( parent );
       XtMainLoop();

}       /* main */

/*
 *      end of file
 */

/* End of File */