GrMainLoop()

Name

GrMainLoop() -- Generic application event dispatch loop

Synopsis

void GrMainLoop ( GR_FNCALLBACKEVENT fncb );

Description

This function is the applications main message pump. While this function is running all events that go through the nano-X event queue will be dispatched to the specified event callback function.

Note

This function never returns.

Parameters

TypeNameDescription
GR_FNCALLBACKEVENTfncbA pointer to the event callback function. This callback function will be called each time an event enters the nano-X event queue.

Example

Example 2-1. Using GrMainLoop()

 
#include <stdio.h>
#define MWINCLUDECOLORS
#include "microwin/nano-X.h"

GR_WINDOW_ID  wid;
GR_GC_ID      gc;

void event_handler (GR_EVENT *event);

int main (void)
{
    if (GrOpen() < 0)
    {
        fprintf (stderr, "GrOpen failed");
        exit (1);
    }

    gc = GrNewGC();
    GrSetGCUseBackground (gc, GR_FALSE);
    GrSetGCForeground (gc, RED);

    wid = GrNewWindowEx (GR_WM_PROPS_APPFRAME |
                         GR_WM_PROPS_CAPTION  |
                         GR_WM_PROPS_CLOSEBOX,
                         "Hello Window",
                         GR_ROOT_WINDOW_ID, 
                         50, 50, 200, 100, WHITE);

    GrSelectEvents (wid, GR_EVENT_MASK_EXPOSURE | 
                         GR_EVENT_MASK_CLOSE_REQ);

    GrMapWindow (wid);
    GrMainLoop (event_handler);
}

void event_handler (GR_EVENT *event)
{
    switch (event->type)
    {
    case GR_EVENT_TYPE_EXPOSURE:
        GrText (wid, gc, 50, 50, 
                "Hello World",  -1, GR_TFASCII);
        break;

    case GR_EVENT_TYPE_CLOSE_REQ:
        GrClose();
        exit (0);
    }
}

See Also

GR_FNCALLBACKEVENT, GrSelectEvents(), GrGetNextEvent(), GrGetNextEventTimeout(), GrCheckNextEvent(), GrPeekEvent(), GrRegisterInput(), GrServiceSelect().