[archimedes] Fenster mit GCC und OSLib erzeugen

  • From: Alexander Ausserstorfer <bavariasound@xxxxxxxxxxxxxxx>
  • To: archimedes@xxxxxxxxxxxxx
  • Date: Sun, 16 Nov 2014 13:51:03 +0100

Hallo,

ich habe jetzt 'mal ein WIMP-Fenster in C mit Hilfe von GCC und OSLib
erzeugt. Das Listing muss ich noch einmal überarbeiten, aber vielleicht
interessiert es ja jemanden hier:

#include "oslib/wimp.h"
#include <stdbool.h>

int main()
{

 // initialise task
 wimp_version_no version_out;
 wimp_t task_handle;
 task_handle=wimp_initialise(310, "OSLib_Example 1", NULL, &version_out);

 // load template and create window
 wimp_open_template ("Example");
 wimp_window window[2000];
 char data[2000];
 char const end[2000];
 byte font_ref=-1;
 char name[11]="Example";
 int context=0;
 int used[2000];
 int data_used[2000];
 wimp_load_template (window, data, end, &font_ref, name, context, used, 
data_used);
 wimp_w w;
 w = wimp_create_window (window);
 wimp_window_state state;
 state.w = w;
 wimp_get_window_state (&state);
 wimp_open open;
 open.w = state.w;
 open.visible = state.visible;
 open.xscroll = state.xscroll;
 open.yscroll = state.yscroll;
 open.next = state.next;
 wimp_open_window (&open);
 wimp_close_template ();

 // variables for wimp_poll
 wimp_event_no event;
 wimp_poll_flags mask=1;
 wimp_block block;
 osbool quit_pending = FALSE;

 while (!quit_pending)
    {
      event = wimp_poll(mask, &block, NULL);
      switch (event)
      {
        case wimp_OPEN_WINDOW_REQUEST:
                wimp_open_window(&(block.open));
                break;

        case wimp_CLOSE_WINDOW_REQUEST:
                wimp_close_window(block.close.w);
                quit_pending = true;
                break;

        case wimp_USER_MESSAGE:
        case wimp_USER_MESSAGE_RECORDED:
           if (block.message.action == message_QUIT)
             {
                 quit_pending = true;
                 break;
             }
       }

    }
 wimp_close_down(task_handle);
 return 0;
}

Die Fensterdefinition muss sich in einer Template-Datei namens Example
befinden, welche nachgeladen wird. Das Fenster muss ebenfalls Example
heißen. Die Template-Datei muss sich bei diesem Listing in dem aktuellen
Verzeichnis befinden, auf das der Filer gerade zeigt (zu finden mittels
*cat).

Schönes Wochenende,

Alex'

-- 
http://home.chiemgau-net.de/ausserstorfer/


Other related posts:

  • » [archimedes] Fenster mit GCC und OSLib erzeugen - Alexander Ausserstorfer