existing input mask for the window. This does not override what the window had previously;
the event mask specified is appended to the input mask for that window. To set an explicit
event mask, the value WIN_NO_EVENTS should be specified first in the list.
xv_set(window,
WIN_EVENT_PROC, sample_event_proc,
WIN_CONSUME_EVENTS,
WIN_NO_EVENTS, WIN_ASCII_EVENTS, WIN_MOUSE_BUTTONS, NULL,
NULL);
All events are cleared at the point in which WIN_NO_EVENTS is given in the list. If it is given
in the middle of the list, then the events specified previous to that point are forgotten. If it is
the only attribute in the list, then the event mask for the window is cleared. Note that this
does not mean that your event handler will receive no events. There are certain events that
are sent to your window, and thus to your event handler, whether you want them or not. This
is addressed later in this chapter.
You can specify which events to ignore in the same way:
xv_set(window,
WIN_IGNORE_EVENTS,
WIN_UP_ASCII_EVENTS, LOC_WINENTER, LOC_WINEXIT,
NULL,
NULL);
Here we are telling the window to ignore the events caused by releasing the ASCII keys on
the keyboard as well as window-enter and window-exit events. As with WIN_X_
EVENT_MASK
, you cannot use WIN_IGNORE_EVENTS to unregister all the events and expect
the event handler to be unregistered. It is perfectly legal to have a window that has no events
registered with it.
While these attributes take a
NULL-terminated list, you can use WIN_CONSUME_EVENT or
WIN_IGNORE_EVENT to consume ...