0,0 → 1,273 |
<HTML |
><HEAD |
><TITLE |
>SDL_SetEventFilter</TITLE |
><META |
NAME="GENERATOR" |
CONTENT="Modular DocBook HTML Stylesheet Version 1.64 |
"><LINK |
REL="HOME" |
TITLE="SDL Library Documentation" |
HREF="index.html"><LINK |
REL="UP" |
TITLE="Event Functions." |
HREF="eventfunctions.html"><LINK |
REL="PREVIOUS" |
TITLE="SDL_PushEvent" |
HREF="sdlpushevent.html"><LINK |
REL="NEXT" |
TITLE="SDL_GetEventFilter" |
HREF="sdlgeteventfilter.html"></HEAD |
><BODY |
CLASS="REFENTRY" |
BGCOLOR="#FFF8DC" |
TEXT="#000000" |
LINK="#0000ee" |
VLINK="#551a8b" |
ALINK="#ff0000" |
><DIV |
CLASS="NAVHEADER" |
><TABLE |
WIDTH="100%" |
BORDER="0" |
CELLPADDING="0" |
CELLSPACING="0" |
><TR |
><TH |
COLSPAN="3" |
ALIGN="center" |
>SDL Library Documentation</TH |
></TR |
><TR |
><TD |
WIDTH="10%" |
ALIGN="left" |
VALIGN="bottom" |
><A |
HREF="sdlpushevent.html" |
>Prev</A |
></TD |
><TD |
WIDTH="80%" |
ALIGN="center" |
VALIGN="bottom" |
></TD |
><TD |
WIDTH="10%" |
ALIGN="right" |
VALIGN="bottom" |
><A |
HREF="sdlgeteventfilter.html" |
>Next</A |
></TD |
></TR |
></TABLE |
><HR |
ALIGN="LEFT" |
WIDTH="100%"></DIV |
><H1 |
><A |
NAME="SDLSETEVENTFILTER" |
>SDL_SetEventFilter</A |
></H1 |
><DIV |
CLASS="REFNAMEDIV" |
><A |
NAME="AEN5032" |
></A |
><H2 |
>Name</H2 |
>SDL_SetEventFilter -- Sets up a filter to process all events before they are posted |
to the event queue.</DIV |
><DIV |
CLASS="REFSYNOPSISDIV" |
><A |
NAME="AEN5035" |
></A |
><H2 |
>Synopsis</H2 |
><DIV |
CLASS="FUNCSYNOPSIS" |
><A |
NAME="AEN5036" |
></A |
><P |
></P |
><PRE |
CLASS="FUNCSYNOPSISINFO" |
>#include "SDL.h"</PRE |
><P |
><CODE |
><CODE |
CLASS="FUNCDEF" |
>void <B |
CLASS="FSFUNC" |
>SDL_SetEventFilter</B |
></CODE |
>(SDL_EventFilter filter);</CODE |
></P |
><P |
></P |
></DIV |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="AEN5042" |
></A |
><H2 |
>Description</H2 |
><P |
>This function sets up a filter to process all events before they are posted |
to the event queue. This is a very powerful and flexible feature. The filter |
is prototyped as: |
<PRE |
CLASS="PROGRAMLISTING" |
>typedef int (*SDL_EventFilter)(const SDL_Event *event);</PRE |
> |
If the filter returns <SPAN |
CLASS="RETURNVALUE" |
>1</SPAN |
>, then the event will be |
added to the internal queue. If it returns <SPAN |
CLASS="RETURNVALUE" |
>0</SPAN |
>, |
then the event will be dropped from the queue. This allows selective |
filtering of dynamically.</P |
><P |
>There is one caveat when dealing with the <TT |
CLASS="LITERAL" |
>SDL_QUITEVENT</TT |
> event type. The |
event filter is only called when the window manager desires to close the |
application window. If the event filter returns 1, then the window will |
be closed, otherwise the window will remain open if possible. |
If the quit event is generated by an interrupt signal, it will bypass the |
internal queue and be delivered to the application at the next event poll.</P |
><DIV |
CLASS="NOTE" |
><BLOCKQUOTE |
CLASS="NOTE" |
><P |
><B |
>Note: </B |
>Events pushed onto the queue with <A |
HREF="sdlpushevent.html" |
><TT |
CLASS="FUNCTION" |
>SDL_PushEvent</TT |
></A |
> or <A |
HREF="sdlpeepevents.html" |
><TT |
CLASS="FUNCTION" |
>SDL_PeepEvents</TT |
></A |
> do not get passed through the event filter.</P |
></BLOCKQUOTE |
></DIV |
><DIV |
CLASS="NOTE" |
><BLOCKQUOTE |
CLASS="NOTE" |
><P |
><B |
>Note: </B |
><I |
CLASS="EMPHASIS" |
>Be Careful!</I |
> The event filter function may run in a different thread so be careful what you do within it.</P |
></BLOCKQUOTE |
></DIV |
></DIV |
><DIV |
CLASS="REFSECT1" |
><A |
NAME="AEN5059" |
></A |
><H2 |
>See Also</H2 |
><P |
><A |
HREF="sdlevent.html" |
><SPAN |
CLASS="STRUCTNAME" |
>SDL_Event</SPAN |
></A |
>, |
<A |
HREF="sdlgeteventfilter.html" |
><TT |
CLASS="FUNCTION" |
>SDL_GetEventFilter</TT |
></A |
>, |
<A |
HREF="sdlpushevent.html" |
><TT |
CLASS="FUNCTION" |
>SDL_PushEvent</TT |
></A |
></P |
></DIV |
><DIV |
CLASS="NAVFOOTER" |
><HR |
ALIGN="LEFT" |
WIDTH="100%"><TABLE |
WIDTH="100%" |
BORDER="0" |
CELLPADDING="0" |
CELLSPACING="0" |
><TR |
><TD |
WIDTH="33%" |
ALIGN="left" |
VALIGN="top" |
><A |
HREF="sdlpushevent.html" |
>Prev</A |
></TD |
><TD |
WIDTH="34%" |
ALIGN="center" |
VALIGN="top" |
><A |
HREF="index.html" |
>Home</A |
></TD |
><TD |
WIDTH="33%" |
ALIGN="right" |
VALIGN="top" |
><A |
HREF="sdlgeteventfilter.html" |
>Next</A |
></TD |
></TR |
><TR |
><TD |
WIDTH="33%" |
ALIGN="left" |
VALIGN="top" |
>SDL_PushEvent</TD |
><TD |
WIDTH="34%" |
ALIGN="center" |
VALIGN="top" |
><A |
HREF="eventfunctions.html" |
>Up</A |
></TD |
><TD |
WIDTH="33%" |
ALIGN="right" |
VALIGN="top" |
>SDL_GetEventFilter</TD |
></TR |
></TABLE |
></DIV |
></BODY |
></HTML |
> |