Crystal Space: 4.2.1.2 Event Handling

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

#### 4.2.1.2 Event Handling

To make the testing somewhat easier we will add a way to terminate the application by responding to the `ESC` key. Add the following private method to our class in ``simple.h'`:

    bool OnKeyboard (iEvent&);

The function `OnKeyboard()` will be called when an event arrives Add the following code to ``simple.cpp'` just before `Simple::OnInitialize()`:

    bool Simple::OnKeyboard(iEvent& ev)
    {
      csKeyEventType eventtype = csKeyEventHelper::GetEventType(&ev);
      if (eventtype == csKeyEventTypeDown)
      {
        utf32_char code = csKeyEventHelper::GetCookedCode(&ev);
        if (code == CSKEY_ESC)
        {
          csRef<iEventQueue> q =
            csQueryRegistry<iEventQueue> (GetObjectRegistry());
          if (q.IsValid()) q->GetEventOutlet()->Broadcast(csevQuit (
          	GetObjectRegistry ()));
        }
      }
      return false;
    }

`OnKeyboard()` checks if the `ESC` key has been pressed. If so it uses the object registry to find the global event queue object. Using `Broadcast()` it then broadcasts the ``csevQuit'` message to all interested parties. This will cause the application to quit by terminating the run-loop.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ]

This document was generated using texi2html 1.76.