General Messages

B_ABOUT_REQUESTED

Purpose:Deliverable
Source:The system or your app.
Target:App-defined; typically be_app.
Hook:BApplication::AboutRequested() if the target is be_app.

The message should be assigned to an About... menu item, such that the message is sent when the user clicks the item. Your application is expected to put up an "About This Application" panel when it receives this message.

B_ACQUIRE_OVERLAY_LOCK, B_RELEASE_OVERLAY_LOCK

Purpose:Deliverable
Source:A graphics driver.
Target:The team owning the overlay.

B_ACQUIRE_OVERLAY_LOCK is sent by a graphics driver when an overlay is acquired. B_RELEASE_OVERLAY_LOCK is sent when the overlay is released.

B_APP_ACTIVATED

Purpose:Deliverable
Source:The system.
Target:be_app
Hook:BApplication::AppActivated()

Sent when an application becomes active or inactive.

FieldType codeDescription
activeB_BOOL_TYPEtrue if the app has become active; otherwise false.

B_ARCHIVED_OBJECT

Purpose:Deliverable and format
Source:A dragged replicant, or your app.
Target:A (remote) application.
Hook:BShelf::CanAcceptReplicantMessage()

As a deliverable:

The replicant system uses this message as a deliverable. If you're using BDragger and BShelf objects, the message is created and delivered for you. You can also simulate a dragged replicant by archiving a view, setting the archive message's command to B_ARCHIVED_OBJECT, and sending the message to a remote application. If the remote application has a BShelf object, the BShelf will pick up the message (through a BMessageFilter) and pass it to the hook function.

To create a simulated replicant message, you call Archive() on the view that you want to replicate, and add (at least) the add_on field to the archive message.

See BShelf and BDragger for more information about replicants.

As a format:

B_ARCHIVED_OBJECT should be used as the command constant for all archive messages. When you archive an object, the class field is automatically added to the archive message. All other fields must be added by your archiving code. See the BArchivable class for more information about archiving.

FieldType codeDescription
class [ ]B_STRING_TYPEAn array of class names that gives the class hierarchy of the archived object.
add_onB_STRING_TYPEThe signature of the library or application that knows how to create the archived object.
be:add_on_versionB_INT32_TYPEThe version of the add_on.
be:load_each_timeB_BOOL_TYPEtrue: The add_on is loaded each time the object is unarchived. false: The add_on is loaded only if it isn't already loaded.
be:unload_on_deleteB_BOOL_TYPEIs the add_on unloaded when the unarchived object is deleted?
shelf_type (replicants only; optional)B_STRING_TYPEThe type of shelf that you want to have display the replicant. A shelf's type is its name, as assigned when it's created.

B_ARGV_RECEIVED

Purpose:Deliverable
Source:The system.
Target:be_app
Hook:BApplication::ArgvReceived()

Forwards arguments that (a) the user passes while launching the app from the command line, or (b) are passed to BRoster::Launch(). Most apps treat command line arguments as filenames that should be opened. If the filename is relative (if it doesn't start with "/"), you should append it to the cwd field to reconstruct the full path.

FieldType codeDescription
argcB_INT32_TYPEThe number of arguments.
argv [argc]B_STRING_TYPEThe arguments.
cwdB_STRING_TYPEThe path name of the current working directory.

B_CANCEL

Purpose:Deliverable
Source:The Application Kit.
Target:Application Server.

Used to cancel an ongoing operation. The Application Kit sends this message to the Application Server to cancel a shutdown if a window refuses to quit.

B_CLIPBOARD_CHANGED

Purpose:Deliverable
Source:The Application Server.
Target:Selected BMessenger.

If you've called BClipboard::StartWatching() to monitor a clipboard for changes, this message is sent to the specified BMessenger when the clipboard changes.

B_CONTROL_INVOKED

Purpose:Deliverable
Source:A BControl.
Target:Selected BMessenger.

This message is sent to the targeted messenger when a BControl-derived object is invoked.

B_INPUT_DEVICES_CHANGED

Purpose:Deliverable
Source:The Input Server.
Target:Add-on specified target.
Hook:BInputDevice::Control()

This message is sent by the Input Server to send you notification when a device starts or stops, or when the set of registered devices changes. These messages are sent only if you've used the watch_input_devices() function to request such notification. The messages are sent to the target indicated in the function call.

FieldType codeDescription
codeB_INT32_TYPE Operation code for the keyboard device control request being issued. One of: B_INPUT_DEVICE_ADDED B_INPUT_DEVICE_STARTED B_INPUT_DEVICE_STOPPED B_INPUT_DEVICE_REMOVED
deviceB_STRING_TYPEThe name of the device. If this field doesn't exist, the device is identified by type instead.
typeB_INT32_TYPEThe device type. If this field doesn't exist, the device field identifies the device.
messageB_MESSAGE_TYPEThe control message. None of the BeOS standard messages use this field.

B_INPUT_METHOD_EVENT

Purpose:Deliverable
Source:The Input Server.
Target:Input method add-on's BLooper.

This message is sent by the Input Server to an input method add-on to let it know that a method event has occurred. The message's be:opcode field indicates which event has occurred.

  • B_INPUT_METHOD_STARTED
  • B_INPUT_METHOD_STOPPED
  • B_INPUT_METHOD_CHANGED
  • B_INPUT_METHOD_LOCATION_REQUEST

These are discussed in more detail in the Input Server chapter.

B_KEY_DOWN, B_KEY_UP, B_UNMAPPED_KEY_DOWN, B_UNMAPPED_KEY_UP

Purpose:Deliverable
Source:The system.
Target:The focus view's BWindow.
Hook: BView::KeyDown() (B_KEY_DOWN)
BView::KeyUp() (B_KEY_UP)
(The ...UNMAPPED... messages don't map to hook functions.)

B_KEY_DOWN is sent when the user presses (or holds down) a key that's mapped to a character; B_KEY_UP is sent when the user releases the key. B_UNMAPPED_KEY_DOWN and B_UNMAPPED_KEY_UP are sent if the key isn't mapped to a character. This doesn't include modifier keys, which are reported in the B_MODIFIERS_CHANGED message.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
keyB_INT32_TYPEThe code for the physical key that was pressed. See <x> for the key map.
be:key_repeat (B_KEY_DOWN only)B_INT32_TYPEThe "iteration number" of this key down. When the user holds the key down, successive messages are sent with increasing key repeat values. This field isn't present in the initial event; the first repeat message (i.e., the second key down message) has a key repeat value of 1.
modifiersB_INT32_TYPEThe modifier keys that were in effect at the time of the event. See <x> for a list of values.
statesB_UINT8_TYPEThe state of all keys at the time of the event. See <x>.
byte [3] (B_KEY_DOWN and B_KEY_UP only)B_INT8_TYPEThe UTF8 data that's generated
bytes (B_KEY_DOWN and B_KEY_UP only)B_STRING_TYPEThe string that's generated. (The string usually contains a single character.)
raw_char (B_KEY_DOWN and B_KEY_UP only)B_INT32_TYPEModifier-independent ASCII code for the character.

B_KEYBOARD_DEVICE

Purpose:Deliverable
Source:The input server.
Target:A keyboard device add-on.
Hook:BInput::Control()

This message is used by the input server to send a request to a keyboard device add-on.

FieldType codeDescription
codeB_INT32_TYPEOperation code for the keyboard device control request being issued. One of:
  • B_KEY_MAP_CHANGED

  • B_KEY_LOCKS_CHANGED

  • B_KEY_REPEAT_DELAY_CHANGED

  • B_KEY_REPEAT_RATE_CHANGED

deviceB_STRING_TYPEThe name of the device. If this field doesn't exist, the device is identified by type instead.
typeB_INT32_TYPEThe device type. If this field doesn't exist, the device field identifies the device.
messageB_MESSAGE_TYPEThe control message for the request. None of the BeOS standard messages use this field.

B_MINIMIZE

Purpose:Deliverable
Source:The system or your app.
Target:The BWindow that's hidden/unhidden.
Hook:BWindow::Minimize()

Sent when the user double-clicks a window's title bar (to hide the window), or selects a window from the DeskBar's window list (to unhide the window).

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70.
minimizeB_BOOL_TYPEtrue if the window is being hidden; false if it's being unhidden.

B_MODIFIERS_CHANGED

Purpose:Deliverable
Source:The system.
Target:The focus view's window.
Hook: 

Sent when the user presses or releases a modifier key.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
modifiersB_INT32_TYPEThe current modifier keys.
be:old_modifiersB_INT32_TYPEThe previous modifier keys.
statesB_UINT8_TYPEThe state of all keys at the time of the event. See <x>.

B_MOUSE_DOWN

Purpose:Deliverable
Source:The system.
Target:The BWindow of the view the mouse is pointing to.
Hook:BView::MouseDown()

Sent when the user presses a mouse button. This message is only sent if no other mouse button is already down.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
whereB_POINT_TYPEMouse location in the view's coordinate system.
modifiersB_INT32_TYPEThe modifier keys that were in effect at the time of the event.
buttonsB_INT32_TYPEThe mouse button that was pressed, one of: B_PRIMARY_MOUSE_BUTTON, B_SECONDARY_MOUSE_BUTTON, B_TERTIARY_MOUSE_BUTTON
clicksB_INT32_TYPE1 for a single-click, 2 for double-click, 3 for triple-click, and so on. The counter is reset if the time between clicks exceeds the "Double-click speed" set by the user in the Mouse preferences. Note that the counter is not reset if the mouse moves between clicks.

B_MOUSE_MOVED

Purpose:Deliverable
Source:The system.
Target:The BWindow of the view the mouse is pointing to.
Hook:BView::MouseMoved()

Sent when the user moves the mouse.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
whereB_POINT_TYPEThe mouse's new location in window coordinates.
buttonsB_INT32_TYPEThe mouse buttons that are down. Zero or more of: B_PRIMARY_MOUSE_BUTTON, B_SECONDARY_MOUSE_BUTTON, B_TERTIARY_MOUSE_BUTTON

B_MOUSE_UP

Purpose:Deliverable
Source:The system.
Target:BWindow of the view the mouse is pointing to.
Hook:BView::MouseUp()

Sent when the user releases a mouse button. It's only sent if no other mouse button remains down.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
whereB_POINT_TYPEMouse location in the view's coordinate system.
modifiersB_INT32_TYPEThe modifier keys that were in effect at the time of the event.

B_MOUSE_WHEEL_CHANGED

Purpose:Deliverable
Source:The system.
Target:The BWindow of the view the mouse is pointing to.
Hook: 

Sent when the user moves the mouse wheel (on mice that have them).

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
be:wheel_delta_xB_FLOAT_TYPEHow much the Y value of the wheel has changed.
be:wheel_delta_yB_FLOAT_TYPEHow much the Y value of the wheel has changed.

The standard mouse driver that comes with BeOS only supports a Y-oriented wheel.

B_NODE_MONITOR

Purpose:Deliverable
Source:The Node Monitor.
Target:App-defined.
Hook: 

Sent when a monitored file changes. All Node Monitor messages contain an int32 opcode field that tells you what happened (a file was removed, an attribute changed, etc.). The format of the rest of the message depends on the opcode. The formats are given under individual entries in this appendix, listed by opcode value:

  • B_ENTRY_CREATED

  • B_ENTRY_REMOVED

  • B_ENTRY_MOVED

  • B_STAT_CHANGED

  • B_ATTR_CHANGED

  • B_DEVICE_MOUNTED

  • B_DEVICE_UNMOUNTED

These are discussed in the section "The Node Monitor".

B_OBSERVER_NOTICE_CHANGE

Purpose:Deliverable
Source:The system.
Target:Application-defined target.
Hook: 

Sent by BHandlers to all targets that have been registered with the BHandler's StartWatching() or StartWatchingAll() function.

FieldType codeDescription
be:observe_change_whatB_INT32_TYPEThe what code of the message being broadcast.
be:observe_orig_whatB_INT32_TYPEThe original what code of the message, before it was altered by the broadcasting mechanism.

The message may have other fields, depending on what the broadcast message is. Messages are sent to targets in response to the BHandler::SendNotices() function. The logic is:

  1. Take the message to broadcast and place its what code into the be:observe_change_orig_what field.

  2. Add the be:observe_change_what field, which is set to the what code specified by the call to SendNotices().

  3. Set the message's what code to B_OBSERVER_NOTICE_CHANGE.

The resulting message is then sent to all interested parties.

B_OPEN_IN_WORKSPACE

Purpose:Deliverable
Source:The system.
Target:BApplication.
Hook: 

Sent to an application when it's first launched to tell it to open in a specific workspace. The message will be handled during the construction of the BApplication object.

FieldType codeDescription
be:workspaceB_INT32_TYPEWorkspace number into which the application should open.

B_POINTING_DEVICE

Purpose:Deliverable
Source:The input server.
Target:A pointing device add-on.
Hook:BInputDevice::Control()

This message is used by the input server to send a request to a pointing device add-on.

FieldType codeDescription
codeB_INT32_TYPEOperation code for the pointing device control request being issued. One of: B_MOUSE_TYPE_CHANGED, B_MOUSE_MAP_CHANGED, B_MOUSE_SPEED_CHANGED, B_CLICK_SPEED_CHANGED, B_MOUSE_ACCELERATION_CHANGED
deviceB_STRING_TYPEThe name of the device. If this field doesn't exist, the device is identified by type instead.
typeB_INT32_TYPEThe device type. If this field doesn't exist, the device field identifies the device.
messageB_MESSAGE_TYPEThe control message for the request. None of the BeOS standard messages use this field.

B_PRINTER_CHANGED

Purpose:Deliverable
Source:The Print Server.
Target:Everyone.
Hook: 

Sent whenever the user changes printers. Applications that support printing should watch for this message, and if they receive it, they should suggest that the user check their page setup the next time they choose to print.

B_PULSE

Purpose:Deliverable
Source:The system.
Target:be_app or BWindow object.
Hook:BApplication::Pulse() and BView::Pulse()

Sent at regular intervals, but with no particular intent. You can implement Pulse() to do whatever you want. The message is to the BWindow only if a BView within the window declares B_PULSE_NEEDED in its constructor flags.

B_QUERY_UPDATE

Purpose:Deliverable
Source:The system.
Target:App-defined.
Hook: 

Sent when the results of a live query change: If a new file meets the query requirements, B_ENTRY_CREATED is sent. If a file that previously passed the query requirements no longer does, B_ENTRY_REMOVED is sent.

B_QUIT_REQUESTED

Purpose:Deliverable
Source:The system or your app.
Target:be_app, BWindow closed by the user, or other BLooper object.
Hook:BLooper::QuitRequested().

Automatically sent (a) to be_app when the user types Command+q, and (b) to a BWindow when the user clicks the window's close box. Applications can also manufacture and send the message themselves. A looper that receives this message is expected to quit, or at least consider quitting.

FieldType codeDescription
shortcutB_BOOL_TYPEtrue if the user typed Command+q.

B_READY_TO_RUN

Purpose:Deliverable
Source:The system.
Target:be_app
Hook:BApplication::ReadyToRun()

Sent when an application has finished configuring itself and is ready to start running.

(No Be-defined fields)

B_REFS_RECEIVED

Purpose:Deliverable
Source:The system or your app.
Target:be_app, or other app-defined target.
Hook:BApplication::RefsReceived()

Automatically sent to be_app when (a) the user double-clicks a file that has a type that's supported by the app, and (b) when the user confirms some files (or directories) in an Open File panel (the target is be_app by default; it can be changed in BFilePanel::SetTarget()). You can also create, stuff, and send a B_REFS_RECEIVED message yourself. When it receives this message, an app is expected to open the files that the message refers to.

FieldType codeDescription
refs [i]B_REF_TYPEentry_ref items, one for each file or directory.

B_RESET_STATUS_BAR

Purpose:Deliverable
Source:Your app.
Target:Reset()
Hook:The BStatusBar you're resetting.

You construct and send this message to a BStatusBar object to tell it to (asynchronously) reset itself. The message also lets you reset the object's labels. To send the message, invoke BWindow's PostMessage() naming the target BStatusBar as the handler:

statusBar->Window()->PostMessage(theMessage, statusBar);
FieldType codeDescription
labelB_STRING_TYPEThe object's new label (NULL-terminated).
trailing_labelB_STRING_TYPEThe object's new trailing label (NULL-terminated)..

B_SCREEN_CHANGED

Purpose:Deliverable
Source:The system.
Target:Every BWindow in the screen that changed (even hidden windows).
Hook:BWindow::ScreenChanged()

Sent when the screen's dimensions or color space changes—because the user played with the Screen preferences app, for example.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
frameB_RECT_TYPEThe screen's dimensions.
modeB_INT32_TYPEThe screen's color space: B_CMAP8, B_RGB15, B_RGB15, or BRGB32.

B_SILENT_RELAUNCH

Purpose:Deliverable
Source:The system.
Target:be_app
Hook: 

Sent to a single-launch application when it's activated by being launched (for example, if the user double-clicks its icon in Tracker).

(No Be-defined fields)

B_SOME_APP_ACTIVATED, B_SOME_APP_LAUNCHED, B_SOME_APP_QUIT

Purpose:Deliverable
Source:The Roster Monitor.
Target:App-defined.
Hook: 

Sent as apps are launched, activated, or quit. You get these messages by invoking BRoster::StartWatching() passing a one or more of B_REQUEST_ACTIVATED, B_REQUEST_LAUNCHED, and B_REQUEST_QUIT.

FieldType codeDescription
mime_sigB_STRING_TYPEThe app signature.
teamB_INT32_TYPEThe app's team id.
threadB_INT32_TYPEThe id of the app's main thread.
flagsB_INT32_TYPEThe app's app flags (B_SINGLE_LAUNCH, B_BACKGROUND_APP, etc).
refB_REF_TYPEThe entry_ref of the app's executable.

B_UPDATE_STATUS_BAR

Purpose:Deliverable
Source:Your app.
Target:The BStatusBar you're updating.
Hook:BStatusBar::Update()

You construct and send this message to a BStatusBar object to tell it to (asynchronously) update its progress. To send the message, invoke BWindow's PostMessage() naming the target BStatusBar as the handler:

statusBar->Window()->PostMessage(theMessage, statusBar);
FieldType codeDescription
deltaB_FLOAT_TYPEAn increment to the object's current value.
textB_STRING_TYPEThe object's new text (NULL-terminated).
trailing_textB_STRING_TYPEThe object's new trailing text (NULL-terminated)..

B_VALUE_CHANGED

Purpose:Deliverable
Source:The system.
Target:The manipulated scrollbar's BWindow.
Hook:BScrollBar::ValueChanged()

Sent when the user plays with a scrollbar.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
valueB_INT32_TYPEThe scrollbar's new value.

B_VIEW_MOVED

Purpose:Deliverable
Source:The system.
Target:The moved view's BWindow.
Hook:BView::FrameMoved()

Sent when a view's origin (left top corner) changes relative to the origin of its parent. The message isn't sent if the view doesn't have the B_FRAME_EVENTS flag set.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
whereB_POINT_TYPEThe view's new origin in the coordinate system of its parent.

B_VIEW_RESIZED

Purpose:Deliverable
Source:The system.
Target:The resized view's BWindow.
Hook:BView::FrameResized()

Sent when the size of the view's frame changes. The message isn't sent if the view doesn't have the B_FRAME_EVENTS flag set.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
widthB_INT32_TYPEThe view's new width.
heightB_INT32_TYPEThe view's new height.
whereB_POINT_TYPEThe view's new origin expressed in the coordinate system of its parent. This field is only included if the view actually moved while being resized, and can always be ignored: If the view did move, you'll hear about it in a separate B_VIEW_MOVED BMessage.

B_WINDOW_ACTIVATED

Purpose:Deliverable
Source:The system.
Target:The activated/deactivated BWindow.
Hook:BWindow::WindowActivated() and BView::WindowActivated()

Sent just after a window is activated or deactivated. Note that the BWindow invokes WindowActivated() on each of its views.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
activeB_BOOL_TYPEtrue if the window is now active; false if not.

B_WINDOW_MOVE_BY

Purpose:Deliverable.
Source:Your application.
Target:The BWindow to be moved.
Hook: 

You can send this message to a window to resize it by the specified deltas.

FieldType codeDescription
dataB_POINT_TYPEThe amount by which to move the window's X and Y coordinates.

B_WINDOW_MOVE_TO

Purpose:Deliverable.
Source:Your application.
Target:The BWindow to be moved.
Hook: 

You can send this message to a window to resize it to the specified size.

FieldType codeDescription
dataB_POINT_TYPEThe width and height (in X and Y) to resize the window to.

B_WINDOW_MOVED

Purpose:Deliverable
Source:The system.
Target:BWindow that moved.
Hook:BWindow::FrameMoved()

Sent when a window's origin (left top corner) changes within the screen coordinate system.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
whereB_POINT_TYPEThe window's new origin in screen coordinates.

B_WINDOW_RESIZED

Purpose:Deliverable
Source:The system.
Target:The resized BWindow.
Hook:BWindow::FrameResized()

Sent when the size of the window's frame changes. Note that the width and height fields measure the window's content area—they don't include the window border or window tab.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
widthB_INT32_TYPEThe width of the window's content area.
heightB_INT32_TYPEThe height of the window's content area.

B_WORKSPACE_ACTIVATED

Purpose:Deliverable
Source:The system.
Target:Every BWindow in the activated and deactivated workspaces.
Hook:BWindow::WorkspaceActivated()

Sent when the active workspace changes.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
workspaceB_INT32_TYPEThe index of the window's workspace.
activeB_BOOL_TYPEtrue if the workspace is now active; false if not.

B_WORKSPACES_CHANGED

Purpose:Deliverable
Source:The system.
Target:The BWindow whose set of workspaces changed.
Hook:BWindow::WorkspacesChanged()

Sent when there's a change to the set of workspaces in which a window can appear.

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70
oldB_INT32_TYPEThe window's old workspace set, given as a vector of workspace indices.
newB_INT32_TYPEThe window's new workspace set, given as a vector of workspace indices.

B_ZOOM

Purpose:Deliverable
Source:The system.
Target:The BWindow that was zoomed.
Hook:BWindow::Zoom()

Sent when the user clicks a window's zoom button.

The message has just one data field:

FieldType codeDescription
whenB_INT64_TYPEEvent time, in microseconds since 01/01/70