haiku-website/static/legacy-docs/bebook/BMessenger.html

153 lines
27 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 - Classes And Methods - 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.html" title="The Application Kit" /><link rel="prev" href="BMessageRunner.html" title="BMessageRunner" /><link rel="next" href="BPropertyInfo.html" title="BPropertyInfo" /></head><body><div id="header"><div id="headerT"><div id="headerTL"><a accesskey="p" href="BMessageRunner.html" title="BMessageRunner"><img src="./images/navigation/prev.png" alt="Prev" /></a> <a accesskey="u" href="TheApplicationKit.html" title="The Application Kit"><img src="./images/navigation/up.png" alt="Up" /></a> <a accesskey="n" href="BPropertyInfo.html" title="BPropertyInfo"><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 - Classes And Methods - The Application Kit</div></div><div id="headerB">Prev: <a href="BMessageRunner.html">BMessageRunner</a>  Up: <a href="TheApplicationKit.html">The Application Kit</a>  Next: <a href="BPropertyInfo.html">BPropertyInfo</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="BMessenger"></a>BMessenger</h2></div></div></div><a id="id932795" class="indexterm"></a><div class="classheader"><table border="0"><colgroup><col /><col /></colgroup><tbody><tr><td><table width="100%" border="0"><colgroup><col /><col /></colgroup><tbody><tr><td>Derived From:</td><td></td></tr><tr><td>Mix-in Classes:</td><td><a class="link" href="BArchivable.html" title="BArchivable"><code class="classname">BArchivable</code></a></td></tr><tr><td>Declared In:</td><td><code class="filename">app/Messenger.h</code></td></tr><tr><td>Library:</td><td><code class="filename">libbe.so</code></td></tr><tr><td>Allocation:</td><td>Stack or constructor</td></tr></tbody></table></td><td>
<a class="link overview" href="BMessenger_Overview.html" title="BMessenger">Class Overview</a>
<div class="toc"><ul><li><span class="section"><a href="BMessenger.html#BMessenger_ConstructorDestructor">Constructor and Destructor</a></span></li><li><span class="section"><a href="BMessenger.html#BMessenger_MemberFunctions">Member Functions</a></span></li><li><span class="section"><a href="BMessenger.html#BMessenger_Operators">Operators</a></span></li></ul></div>
</td></tr></tbody></table></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><hr /><div xmlns:d="http://docbook.org/ns/docbook"><h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_ConstructorDestructor"></a>Constructor and Destructor</h3></div></div></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_Constructor"></a>BMessenger()</h4></div></div></div><div class="synopsisgroup">
<code class="constructorsynopsis cpp"><span class="methodname">BMessenger</span>(<span class="methodparam"><span class="modifier">const </span><span class="type">BHandler* </span><span class="parameter">handler</span></span>,<br />           <span class="methodparam"><span class="modifier">const </span><span class="type">BLooper* </span><span class="parameter">looper</span><span class="initializer"> = <span class="constant">NULL</span></span></span>,<br />           <span class="methodparam"><span class="type">status_t* </span><span class="parameter">error</span><span class="initializer"> = <span class="constant">NULL</span></span></span>);</code>
<code class="constructorsynopsis cpp"><span class="methodname">BMessenger</span>(<span class="methodparam"><span class="modifier">const </span><span class="type">char* </span><span class="parameter">signature</span></span>,<br />           <span class="methodparam"><span class="type">team_id </span><span class="parameter">team</span><span class="initializer"> = -1</span></span>,<br />           <span class="methodparam"><span class="type">status_t* </span><span class="parameter">error</span><span class="initializer"> = <span class="constant">NULL</span></span></span>);</code>
<code class="constructorsynopsis cpp"><span class="methodname">BMessenger</span>(<span class="methodparam"><span class="modifier">const </span><span class="type">BMessenger&amp; </span><span class="parameter">messenger</span></span>);</code>
<code class="constructorsynopsis cpp"><span class="methodname">BMessenger</span>();</code>
</div><p>
Creates a new <code class="classname">BMessenger</code> and sets its target to a local
<code class="parameter">looper</code>/<code class="parameter">handler</code>,
to the (running) application identified by <code class="parameter">signature</code> or
<code class="parameter">team</code>, or to the target of some other
<code class="parameter">messenger</code>.
</p><table class="variablelist parameters"><thead><tr><th>Parameter</th><th>Description</th></tr></thead><tbody><tr><td><p><span class="term"><code class="parameter">looper</code>/<code class="parameter">handler</code>.</span></p></td><td><p>To target a looper, supply a <code class="parameter">looper</code> and pass a
<code class="constant">NULL</code> <code class="parameter">handler</code>. When the
messenger sends a message, the message will be
handled by <code class="parameter">looper</code>'s preferred handler. If you want the message to be
sent to a specific handler within a looper, supply a <code class="parameter">handler</code> and pass a
<code class="constant">NULL</code> <code class="parameter">looper</code>. The handler must already be attached to a looper, and
can't switch loopers after this <code class="classname">BMessenger</code> is constructed.</p></td></tr><tr><td><p><span class="term"><code class="parameter">signature</code> or <code class="parameter">team</code>.</span></p></td><td><p>If you supply a <code class="parameter">signature</code> but leave <code class="parameter">team</code> as
-1, the messenger targets an app with that signature. (The app
must already be running; in the case of multiple instances of a running
app, the exact instance is indeterminate) If you supply a <code class="parameter">team</code> but no
<code class="parameter">signature</code>, you target exactly that <code class="parameter">team</code>,
regardless of <code class="parameter">signature</code>. By
supplying both a <code class="parameter">team</code> and a <code class="parameter">signature</code>, you can specify a specific
instance of an app. In this case, <code class="parameter">team</code> must be an app that has the
proper <code class="parameter">signature</code>.</p></td></tr></tbody></table><p>
Messages sent to a remote target are received and handled by the remote
application's <a class="link" href="BApplication.html" title="BApplication"><code class="classname">BApplication</code></a> object.
</p><p>
The <code class="classname">BMessenger</code> doesn't own its target.
</p><p>
The constructor places an error code in <code class="parameter">error</code> (if provided).
</p><table class="variablelist returncodes"><thead><tr><th>Return Code</th><th>Description</th></tr></thead><tbody><tr><td><p><span class="term"><code class="constant">B_OK</code>.</span></p></td><td><p>The target was properly set.</p></td></tr><tr><td><p><span class="term"><code class="constant">B_BAD_VALUE</code>.</span></p></td><td><p>The application identified by
<code class="parameter">signature</code> couldn't be
found, or both <code class="parameter">handler</code> and <code class="parameter">looper</code> are invalid.</p></td></tr><tr><td><p><span class="term"><code class="constant">B_BAD_TEAM_ID</code>.</span></p></td><td><p>Invalid <code class="parameter">team</code>.</p></td></tr><tr><td><p><span class="term"><code class="constant">B_MISMATCHED_VALUES</code>.</span></p></td><td><p><code class="parameter">team</code> isn't a
<code class="parameter">signature</code> app, or <code class="parameter">handler</code> is
associated with a <a class="link" href="BLooper.html" title="BLooper"><code class="classname">BLooper</code></a>
other than <code class="parameter">looper</code>.</p></td></tr><tr><td><p><span class="term"><code class="constant">B_BAD_HANDLER</code>.</span></p></td><td><p><code class="parameter">handler</code> isn't associated with a
<a class="link" href="BLooper.html" title="BLooper"><code class="parameter">BLooper</code></a></p></td></tr></tbody></table></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_Destructor"></a>~BMessenger()</h4></div></div></div><code class="destructorsynopsis cpp"><span class="methodname">~BMessenger</span>();</code><p>
Frees the <code class="classname">BMessenger</code>; the target isn't affected.
</p></div></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><hr /><div xmlns:d="http://docbook.org/ns/docbook"><h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_MemberFunctions"></a>Member Functions</h3></div></div></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_IsValid"></a>IsValid()</h4></div></div></div><code class="methodsynopsis cpp"><span class="type">bool </span><span class="methodname">IsValid</span>() <span class="modifier">const</span>;</code><p>
Returns <code class="constant">true</code> if the target looper, whether local or remote, still exists.
</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>This function doesn't tell you whether the looper is actually ready to
receive messages, or whether the handler (if it was specified in the
constructor) exists. In other words, a valid <code class="classname">BMessenger</code> is no guarantee
that a message will actually get to the target.</p></div></div></div></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_LockTarget"></a><a id="BMessenger_LockTargetWithTimeout"></a>
LockTarget(), LockTargetWithTimeout()</h4></div></div></div><code class="methodsynopsis cpp"><span class="type">bool </span><span class="methodname">LockTarget</span>() <span class="modifier">const</span>;</code><code class="methodsynopsis cpp"><span class="type">status_t </span><span class="methodname">LockTargetWithTimeout</span>(<span class="methodparam"><span class="type">bigtime_t </span><span class="parameter">timeout</span></span>) <span class="modifier">const</span>;</code><div class="admonition important"><div class="title">Important</div><div class="graphic"><img class="icon" alt="Important" width="32" src="./images/admonitions/Warning_32.png" /><div class="text"><p>These functions apply to local targets only.</p></div></div></div><p>
These functions attempt to lock the target looper in the manner of the
similarly named <a class="link" href="BLooper.html" title="BLooper"><code class="classname">BLooper</code></a>
functions (see
<a class="link" href="BLooper.html#BLooper_Lock" title="Lock(), LockWithTimeout(), Unlock()"><code class="methodname">BLooper::Lock()</code></a>
). In
addition to the error codes reported there, these functions return <code class="constant">false</code>
and <code class="constant">B_BAD_VALUE</code> (respectively) if the target isn't local, or if the
looper is otherwise invalid.
</p></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_SendMessage"></a>SendMessage()</h4></div></div></div><div class="synopsisgroup">
<code class="methodsynopsis cpp"><span class="type">status_t </span><span class="methodname">SendMessage</span>(<span class="methodparam"><span class="type"><a class="link" href="BMessage.html" title="BMessage"><code class="classname">BMessage</code></a>* </span><span class="parameter">message</span></span>,<br />                     <span class="methodparam"><span class="type"><a class="link" href="BMessage.html" title="BMessage"><code class="classname">BMessage</code></a>* </span><span class="parameter">reply</span></span>,<br />                     <span class="methodparam"><span class="type">bigtime_t </span><span class="parameter">deliveryTimeout</span><span class="initializer"> = <span class="constant">B_INFINITE_TIMEOUT</span></span></span>,<br />                     <span class="methodparam"><span class="type">bigtime_t </span><span class="parameter">replyTimeout</span><span class="initializer"> = <span class="constant">B_INFINITE_TIMEOUT</span></span></span>) <span class="modifier">const</span>;</code>
<code class="methodsynopsis cpp"><span class="type">status_t </span><span class="methodname">SendMessage</span>(<span class="methodparam"><span class="type"><a class="link" href="BMessage.html" title="BMessage"><code class="classname">BMessage</code></a>* </span><span class="parameter">message</span></span>,<br />                     <span class="methodparam"><span class="type"><a class="link" href="BHandler.html" title="BHandler"><code class="classname">BHandler</code></a>* </span><span class="parameter">replyHandler</span><span class="initializer"> = <span class="constant">NULL</span></span></span>,<br />                     <span class="methodparam"><span class="type">bigtime_t </span><span class="parameter">deliveryTimeout</span><span class="initializer"> = <span class="constant">B_INFINITE_TIMEOUT</span></span></span>) <span class="modifier">const</span>;</code>
<code class="methodsynopsis cpp"><span class="type">status_t </span><span class="methodname">SendMessage</span>(<span class="methodparam"><span class="type"><a class="link" href="BMessage.html" title="BMessage"><code class="classname">BMessage</code></a>* </span><span class="parameter">message</span></span>,<br />                     <span class="methodparam"><span class="type"><a class="link" href="BMessenger.html" title="BMessenger"><code class="classname">BMessenger</code></a>* </span><span class="parameter">replyMessenger</span></span>,<br />                     <span class="methodparam"><span class="type">bigtime_t </span><span class="parameter">deliveryTimeout</span><span class="initializer"> = <span class="constant">B_INFINITE_TIMEOUT</span></span></span>) <span class="modifier">const</span>;</code>
<code class="methodsynopsis cpp"><span class="type">status_t </span><span class="methodname">SendMessage</span>(<span class="methodparam"><span class="type">uint32 </span><span class="parameter">command</span></span>,<br />                     <span class="methodparam"><span class="type"><a class="link" href="BMessage.html" title="BMessage"><code class="classname">BMessage</code></a>* </span><span class="parameter">reply</span></span>) <span class="modifier">const</span>;</code>
<code class="methodsynopsis cpp"><span class="type">status_t </span><span class="methodname">SendMessage</span>(<span class="methodparam"><span class="type">uint32 </span><span class="parameter">command</span></span>,<br />                     <span class="methodparam"><span class="type"><a class="link" href="BHandler.html" title="BHandler"><code class="classname">BHandler</code></a>* </span><span class="parameter">replyHandler</span><span class="initializer"> = <span class="constant">NULL</span></span></span>) <span class="modifier">const</span>;</code>
</div><p>
Sends a copy of <code class="parameter">message</code> (or a
<a class="link" href="BMessage.html" title="BMessage"><code class="classname">BMessage</code></a> based on a
<code class="parameter">command</code> constant) to
the object's target. The caller retains ownership of <code class="parameter">message</code>. The
function doesn't return until the message has been delivered; if you're
sending a <code class="parameter">message</code> (as opposed to a
<code class="parameter">command</code> constant) you can set a
microsecond delivery timeout through <code class="parameter">deliveryTimeout</code>.
</p><p>
The target can respond to the message:
</p><ul class="itemizedlist"><li><p>
If you supply a <code class="parameter">reply</code>
<a class="link" href="BMessage.html" title="BMessage"><code class="classname">BMessage</code></a>,
the response is synchronous, with an
optional timeout (<code class="parameter">replyTimeout</code>) that starts ticking after the original
message has been delivered. If the response times out, or the target
deletes the original message without responding, the <code class="parameter">reply</code>-&gt;<code class="varname">what</code>
is set to <code class="constant">B_NO_REPLY</code>. The caller is responsible for allocating and
freeing <code class="parameter">reply</code>. <code class="parameter">message</code> and
<code class="parameter">reply</code> can be the same object.</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>Use caution when requesting a synchronous reply: If you call
<code class="methodname">SendMessage()</code> from the target looper's thread, you'll deadlock (or, at
best, time out).</p></div></div></div></li><li><p>
If you supply a reply target (<code class="parameter">replyMessenger</code> or
<code class="parameter">replyHandler</code>), the
response is asynchronous, and is sent to the reply target.
</p></li><li><p>
If you supply neither a reply message nor a reply target, the
target's response is sent to <code class="varname">be_app_messenger</code>.
</p></li></ul><table class="variablelist returncodes"><thead><tr><th>Return Code</th><th>Description</th></tr></thead><tbody><tr><td><p><span class="term"><code class="constant">B_OK</code>.</span></p></td><td><p>
The message was delivered (and the synchronous reply was
received, if applicable).
</p></td></tr><tr><td><p><span class="term"><code class="constant">B_TIMED_OUT</code>.</span></p></td><td><p>
<code class="parameter">deliveryTimeout</code> expired;
the message never made it to the target.
</p></td></tr><tr><td><p><span class="term"><code class="constant">B_WOULD_BLOCK</code>.</span></p></td><td><p>
You requested a 0 <code class="parameter">deliveryTimeout</code>,
and the target's message queue is full.
</p></td></tr><tr><td><p><span class="term"><code class="constant">B_BAD_PORT_ID</code>.</span></p></td><td><p>
The messenger's target is invalid, or the reply port
was deleted while waiting for a reply (synchronous response requests
only).
</p></td></tr><tr><td><p><span class="term"><code class="constant">B_NO_MORE_PORTS</code>.</span></p></td><td><p>
You asked for a synchronous reply, but there are no
more reply ports.
</p></td></tr></tbody></table><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>If you specified a <code class="parameter">handler</code> when you
constructed your <code class="classname">BMessenger</code>, and if
that handler has since changed loopers,
<code class="methodname">SendMessage()</code> won't deliver its
message, but it doesn't complain (it returns <code class="constant">B_OK</code>).</p></div></div></div></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_Target"></a><a id="BMessenger_IsTargetLocal"></a>
<a id="BMessenger_Team"></a>
Target(), IsTargetLocal(), Team()</h4></div></div></div><code class="methodsynopsis cpp"><span class="type"><a class="link" href="BHandler.html" title="BHandler"><code class="classname">BHandler</code></a> </span><span class="methodname">Target</span>(<span class="methodparam"><span class="type"><a class="link" href="BLooper.html" title="BLooper"><code class="classname">BLooper</code></a>** </span><span class="parameter">looper</span></span>) <span class="modifier">const</span>;</code><code class="methodsynopsis cpp"><span class="type">bool </span><span class="methodname">IsTargetLocal</span>() <span class="modifier">const</span>;</code><code class="methodsynopsis cpp"><span class="modifier">inline </span><span class="type">team_id </span><span class="methodname">Team</span>() <span class="modifier">const</span>;</code><p>
<code class="methodname">Target()</code> returns the <code class="classname">BMessenger</code>'s handler
(directly) and looper (by reference in <code class="parameter">looper</code>).
This function only works for local targets. If
<code class="methodname">Target()</code> returns <code class="constant">NULL</code>, it can mean one of four things:
</p><div class="orderedlist"><ol><li><p>
The target is remote; <code class="parameter">looper</code> is set to <code class="constant">NULL</code>.
</p></li><li><p>
The <code class="classname">BMessenger</code> hasn't been initialized; <code class="parameter">looper</code>
is set to <code class="constant">NULL</code>.
</p></li><li><p>
The handler is the looper's preferred handler; <code class="parameter">looper</code> will be valid.
</p></li><li><p>
The handler has been deleted; <code class="parameter">looper</code> will be valid given that it
hasn't been deleted as well.
</p></li></ol></div><p>
<code class="methodname">IsTargetLocal()</code> returns <code class="constant">true</code>
if the target is local. <code class="methodname">Team()</code> returns a
target's team.
</p></div></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><hr /><div xmlns:d="http://docbook.org/ns/docbook"><h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_Operators"></a>Operators</h3></div></div></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_Operator_Equals"></a>= (assignment)</h4></div></div></div><code class="methodsynopsis cpp"><span class="type">BMessenger&amp; </span><span class="methodname">operator=</span>(<span class="methodparam"><span class="modifier">const </span><span class="type">BMessenger&amp; </span><span class="parameter">from</span></span>);</code><p>
Sets the left-side <code class="classname">BMessenger</code>'s target to that of the right-side object.
</p></div><div class="section"><div xmlns="" xmlns:d="http://docbook.org/ns/docbook" class="titlepage"><div><div xmlns:d="http://docbook.org/ns/docbook"><h4 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="BMessenger_Operator_Equality"></a>== (equality)</h4></div></div></div><code class="methodsynopsis cpp"><span class="type">bool </span><span class="methodname">operator==</span>(<span class="methodparam"><span class="modifier">const </span><span class="type">BMessenger&amp; </span><span class="parameter">other</span></span>) <span class="modifier">const</span>;</code><p>
Two <code class="classname">BMessenger</code>s are equal if they have the same target.
</p></div></div></div><div id="footer"><hr /><div id="footerT">Prev: <a href="BMessageRunner.html">BMessageRunner</a>  Up: <a href="TheApplicationKit.html">The Application Kit</a>  Next: <a href="BPropertyInfo.html">BPropertyInfo</a> </div><div id="footerB"><div id="footerBL"><a href="BMessageRunner.html" title="BMessageRunner"><img src="./images/navigation/prev.png" alt="Prev" /></a> <a href="TheApplicationKit.html" title="The Application Kit"><img src="./images/navigation/up.png" alt="Up" /></a> <a href="BPropertyInfo.html" title="BPropertyInfo"><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>