41 lines
8.0 KiB
HTML
41 lines
8.0 KiB
HTML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The Be Book - System Overview - The Application Kit</title><link rel="stylesheet" href="be_book.css" type="text/css" media="all" /><link rel="shortcut icon" type="image/vnd.microsoft.icon" href="./images/favicon.ico" /><!--[if IE]>
|
||
<link rel="stylesheet" type="text/css" href="be_book_ie.css" />
|
||
<![endif]--><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><meta name="keywords" content="Access, BeOS, BeBook, API" /><link rel="start" href="index.html" title="The Be Book" /><link rel="up" href="TheApplicationKit_Overview.html" title="The Application Kit" /><link rel="prev" href="BMessage_Overview.html" title="BMessage" /><link rel="next" href="BMessageQueue_Overview.html" title="BMessageQueue" /></head><body><div id="header"><div id="headerT"><div id="headerTL"><a accesskey="p" href="BMessage_Overview.html" title="BMessage"><img src="./images/navigation/prev.png" alt="Prev" /></a> <a accesskey="u" href="TheApplicationKit_Overview.html" title="The Application Kit"><img src="./images/navigation/up.png" alt="Up" /></a> <a accesskey="n" href="BMessageQueue_Overview.html" title="BMessageQueue"><img src="./images/navigation/next.png" alt="Next" /></a></div><div id="headerTR"><div id="navigpeople"><a href="http://www.haiku-os.org"><img src="./images/People_24.png" alt="haiku-os.org" title="Visit The Haiku Website" /></a></div><div class="navighome" title="Home"><a accesskey="h" href="index.html"><img src="./images/navigation/home.png" alt="Home" /></a></div><div class="navigboxed" id="navigindex"><a accesskey="i" href="ClassIndex.html" title="Index">I</a></div><div class="navigboxed" id="naviglang" title="English">en</div></div><div id="headerTC">The Be Book - System Overview - The Application Kit</div></div><div id="headerB">Prev: <a href="BMessage_Overview.html">BMessage</a> Up: <a href="TheApplicationKit_Overview.html">The Application Kit</a> Next: <a href="BMessageQueue_Overview.html">BMessageQueue</a></div><hr /></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h2 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessageFilter_Overview"></a>BMessageFilter</h2></div></div></div><a id="id450351" class="indexterm"></a><p>A <a class="link" href="BMessageFilter.html" title="BMessageFilter"><code class="classname">BMessageFilter</code></a> is a message-screening function
|
||
that you "attach" to a <a class="link" href="BLooper.html" title="BLooper"><code class="classname">BLooper</code></a> or <a class="link" href="BHandler.html" title="BHandler"><code class="classname">BHandler</code></a>. The message
|
||
filter sees messages just before they're dispatched (i.e. just before <a class="link" href="BLooper.html#BLooper_DispatchMessage" title="DispatchMessage()"><code class="methodname">BLooper::DispatchMessage()</code></a>),
|
||
and can modify or reject the message, change the
|
||
message's designated handler, or whatever else it wants to do—the
|
||
implementation of the filter function isn't restricted.</p><p>To define a message filter, you have to provide a message-filtering
|
||
function. You do this by implementing the <a class="link" href="BMessageFilter.html#BMessageFilter_Filter" title="Filter()"><code class="methodname">Filter()</code></a>
|
||
hook function in a
|
||
<a class="link" href="BMessageFilter.html" title="BMessageFilter"><code class="classname">BMessageFilter</code></a>
|
||
subclass, or by supplying a
|
||
<a class="link" href="BMessageFilter.html#filter_hook" title="filter_hook, filter_result"><code class="function">filter_hook</code></a>
|
||
function to the
|
||
<a class="link" href="BMessageFilter.html" title="BMessageFilter"><code class="classname">BMessageFilter</code></a>
|
||
constructor. Only one filter function per object is called. If you implement
|
||
<a class="link" href="BMessageFilter.html#BMessageFilter_Filter" title="Filter()"><code class="methodname">Filter()</code></a>
|
||
and provide a <code class="function">filter_hook</code> function, the
|
||
<code class="function">filter_hook</code> will win.</p><p>To attach a message filter to a looper, call
|
||
<a class="link" href="BLooper.html#BLooper_AddCommonFilter" title="AddCommonFilter(), RemoveCommonFilter(), SetCommonFilterList(), CommonFilterList()"><code class="methodname">BLooper::AddCommonFilter()</code></a>.
|
||
To add it to a handler, call
|
||
<a class="link" href="BHandler.html#BHandler_AddFilter"><code class="methodname">BHandler::AddFilter()</code></a>.
|
||
Looper filters see all incoming messages; handler filters see only
|
||
those messages that are targetted for that particular handler.</p><p>A <a class="link" href="BLooper.html" title="BLooper"><code class="classname">BLooper</code></a> or
|
||
<a class="link" href="BHandler.html" title="BHandler"><code class="classname">BHandler</code></a>
|
||
can have more than one message filter. Furthermore, a looper can have two sets of
|
||
filters: a looper set and a handler set (keep in mind that
|
||
<a class="link" href="BLooper.html" title="BLooper"><code class="classname">BLooper</code></a>
|
||
is derived from
|
||
<a class="link" href="BHandler.html" title="BHandler"><code class="classname">BHandler</code></a>).
|
||
Looper filters are applied before handler filters.</p><p>A <a class="link" href="BMessageFilter.html" title="BMessageFilter"><code class="classname">BMessageFilter</code></a>
|
||
object can be assigned to only one
|
||
<a class="link" href="BHandler.html" title="BHandler"><code class="classname">BHandler</code></a> or <a class="link" href="BLooper.html" title="BLooper"><code class="classname">BLooper</code></a> at a time.</p><div class="admonition warning"><div class="title">Warning</div><div class="graphic"><img class="icon" alt="Warning" width="32" src="./images/admonitions/Stop_32.png" /><div class="text"><p>The <a class="link" href="BMessageFilter.html" title="BMessageFilter"><code class="classname">BMessageFilter</code></a>
|
||
class is intended to be used as
|
||
part of the system-defined messaging system. If you try to use one outside
|
||
this system, your results may not be what you expect.</p></div></div></div></div><div id="footer"><hr /><div id="footerT">Prev: <a href="BMessage_Overview.html">BMessage</a> Up: <a href="TheApplicationKit_Overview.html">The Application Kit</a> Next: <a href="BMessageQueue_Overview.html">BMessageQueue</a> </div><div id="footerB"><div id="footerBL"><a href="BMessage_Overview.html" title="BMessage"><img src="./images/navigation/prev.png" alt="Prev" /></a> <a href="TheApplicationKit_Overview.html" title="The Application Kit"><img src="./images/navigation/up.png" alt="Up" /></a> <a href="BMessageQueue_Overview.html" title="BMessageQueue"><img src="./images/navigation/next.png" alt="Next" /></a></div><div id="footerBR"><div><a href="http://www.haiku-os.org"><img src="./images/People_24.png" alt="haiku-os.org" title="Visit The Haiku Website" /></a></div><div class="navighome" title="Home"><a accesskey="h" href="index.html"><img src="./images/navigation/home.png" alt="Home" /></a></div></div><div id="footerBC"><a href="http://www.access-company.com/home.html" title="ACCESS Co."><img alt="Access Company" src="./images/access_logo.png" /></a></div></div></div><div id="licenseFooter"><div id="licenseFooterBL"><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" title="Creative Commons License"><img alt="Creative Commons License" style="border-width:0" src="https://licensebuttons.net/l/by-nc-nd/3.0/88x31.png" /></a></div><div id="licenseFooterBR"><a href="./LegalNotice.html">Legal Notice</a></div><div id="licenseFooterBC"><span id="licenseText">This work is licensed under a
|
||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative
|
||
Commons Attribution-Non commercial-No Derivative Works 3.0 License</a>.</span></div></div></body></html>
|