BMessageFilter¶
A BMessageFilter
is a message-screening function that you
“attach” to a BLooper
or BHandler
. The message
filter sees messages just before they’re dispatched (i.e. just before
BLooper::DispatchMessage()
), 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.
To define a message filter, you have to provide a message-filtering
function. You do this by implementing the
Filter()
hook function in a
BMessageFilter
subclass, or by supplying a
filter_hook()
function to the BMessageFilter
constructor. Only one filter function per object is called. If you
implement Filter()
and provide a filter_hook
function, the filter_hook will win.
To attach a message filter to a looper, call
BLooper::AddCommonFilter()
. To add it to a handler, call
BHandler::AddFilter()
. Looper filters see all incoming
messages; handler filters see only those messages that are targetted for
that particular handler.
A BLooper
or BHandler
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 BLooper
is
derived from BHandler
). Looper filters are applied before
handler filters.
A BMessageFilter
object can be assigned to only one
BHandler
or BLooper
at a time.
Warning
The BMessageFilter
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.