wimp.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "oslib/wimp.h"
#define task_name "WIMP"
wimp_w window_handle; /* Our window handle */
wimp_t task_handle; /* Our task handle */
void register_task(void)
{
int messages[] = {message_QUIT, 0}; /* Avoid complexity of message block initialisation. */
task_handle = wimp_initialise(wimp_VERSION_RO2, task_name, (wimp_message_list *) &messages, NULL);
}
void event_poll(void)
{
wimp_poll_flags mask;
wimp_block block;
wimp_event_no reason;
int done;
done = 0;
do
{
mask = 0;
reason = wimp_poll(mask, &block, NULL);
switch (reason)
{
case wimp_OPEN_WINDOW_REQUEST:
wimp_open_window(&block.open);
break;
case wimp_CLOSE_WINDOW_REQUEST:
wimp_close_window(block.close.w);
done = 1;
break;
default:
break;
}
}
while (!done);
}
void open_window(void)
{
wimp_window new_window;
wimp_window_state state;
new_window.visible.x0 = 200;
new_window.visible.y1 = 200;
new_window.visible.x1 = 200 + 300;
new_window.visible.y1 = 200 + 500;
new_window.xscroll = 0;
new_window.yscroll = 0;
new_window.next = wimp_TOP;
new_window.flags = wimp_WINDOW_NEW_FORMAT | wimp_WINDOW_MOVEABLE | wimp_WINDOW_AUTO_REDRAW |
wimp_WINDOW_BACK_ICON | wimp_WINDOW_CLOSE_ICON | wimp_WINDOW_TITLE_ICON |
wimp_WINDOW_TOGGLE_ICON | wimp_WINDOW_VSCROLL | wimp_WINDOW_HSCROLL | wimp_WINDOW_SIZE_ICON;
new_window.title_fg = wimp_COLOUR_BLACK;
new_window.title_bg = wimp_COLOUR_LIGHT_GREY;
new_window.work_fg = wimp_COLOUR_BLACK;
new_window.work_bg = wimp_COLOUR_VERY_LIGHT_GREY;
new_window.scroll_outer = wimp_COLOUR_MID_LIGHT_GREY;
new_window.scroll_inner = wimp_COLOUR_VERY_LIGHT_GREY;
new_window.highlight_bg = wimp_COLOUR_CREAM;
new_window.extra_flags = 0;
new_window.extent.x0 = 0;
new_window.extent.y0 = -500 - 200;
new_window.extent.x1 = 300 + 200;
new_window.extent.y1 = 0;
new_window.title_flags = wimp_ICON_TEXT | wimp_ICON_HCENTRED | wimp_ICON_VCENTRED;
new_window.work_flags = wimp_BUTTON_CLICK << wimp_ICON_BUTTON_TYPE_SHIFT;
new_window.sprite_area = 0;
new_window.xmin = 0;
new_window.ymin = 0;
strcpy(new_window.title_data.text, "H");
new_window.icon_count = 0;
window_handle = wimp_create_window(&new_window);
state.w = window_handle;
wimp_get_window_state(&state);
wimp_open_window((wimp_open *) &state);
}
int main()
{
register_task();
open_window();
event_poll();
wimp_close_window(window_handle);
wimp_delete_window(window_handle); /* Unnecessary! */
wimp_close_down(task_handle);
return(0);
}
Generated by GNU Enscript 1.6.5.