Listing 2. sample.c, Version 2
/*
* Sample XView Program, Version 2
* - creates window frame
* - adds control panel with two buttons
* - adds text sub-window
*/
#include <xview/xview.h>
#include <xview/textsw.h>
#include <xview/panel.h>
/*
* fixed literal string, inserted into text
* sub-window */
char *heyyou = "Hey, you!\n";
/*
* handle for the text sub-window */
Textsw textpane;
/*
* Callback function for the "Insert String"
* button */
void insert_string(Panel_item item, Event *event)
{
textsw_insert(textpane, heyyou,
strlen(heyyou));
}
/*
* Callback function for the "Clear Window"
* button */
void clear_window(Panel_item item, Event *event)
{
textsw_reset(textpane, 0, 0);
}
/*
* Mainline for sample program, version 2 */
void main(int argc, char *argv[])
{
Frame frame;
Panel panel;
/*
* let XView scan command-line arguments */
xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, &argv,
NULL);
/* create a top level frame */
frame = (Frame)xv_create(XV_NULL, FRAME,
FRAME_LABEL, argv[0],
XV_WIDTH, 300,
XV_HEIGHT, 200,
NULL);
/* add a control panel to the frame */
panel = (Panel)xv_create(frame, PANEL,
XV_X, 0,
XV_Y, 0,
XV_WIDTH, WIN_EXTEND_TO_EDGE,
XV_HEIGHT, 30,
WIN_BORDER, FALSE,
NULL);
/* add a button to the control panel */
(void)xv_create(panel, PANEL_BUTTON,
PANEL_LABEL_STRING, "Insert String",
PANEL_NOTIFY_PROC, insert_string,
NULL);
/* add another button to the control panel */
(void)xv_create(panel, PANEL_BUTTON,
PANEL_LABEL_STRING, "Clear Window",
PANEL_NOTIFY_PROC, clear_window,
NULL);
/* add the text sub-window to the frame */
textpane = xv_create(frame, TEXTSW, NULL);
/*
* let XView handle all events for us */
xv_main_loop(frame);
exit(0);
}
Copyright © 1994 - 2019 Linux Journal. All rights reserved.