Message Constants


Container Messages

A few constants identify messages as data containers. The system currently uses the B_MIME_DATA and B_SIMPLE_DATA constants to mark the containers it constructs for drag-and-drop operations.

B_MIME_DATA

This message constant indicates that all the data in the message is identified by MIME type names. The type code of every data field is B_MIME_TYPE and the name of each field is the MIME type string.

As an example, a BTextView object puts together a B_MIME_DATA message for drag-and-drop operations. The message has the text itself in a field named "text/plain"; the text_run_array structure that describes the character formats of the text is in a field named "application/x-vnd.Be-text_run_array".

B_SIMPLE_DATA

This message is a package for a single data element. If there are multiple data fields in the message, they present the same data in various formats.

For example, when the user drags selected files and directories from a Tracker window, the Tracker packages entry_ref references to them in a B_SIMPLE_DATA message. The references are in a refs array with a type code of B_REF_TYPE. In other words, the message has the same structure as a B_REFS_RECEIVED message, but a different what constant.


Selection Messages

Declared in: app/AppDefs.h

These messages are sent to BTextView and BWindow classes (which normally passes the message to a BTextView instance) to cut, copy, paste and select all items respectively.

B_CUT

Removes the selected items and moves it to the clipboard.

The Command+X key combination is normally mapped to B_CUT

B_COPY

Copies the selected items to the clipboard.

The Command+C key combination is normally mapped to B_COPY

B_PASTE

Pastes items stored in the clipboard into the view.

The Command+V key combination is normally mapped to B_PASTE

B_SELECT_ALL

Selects all the items in the clipboard into the view.

The Command+A key combination is normally mapped to B_SELECT_ALL


Status Bar Messages

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_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)..

General Constants

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.


Keyboard Messages

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_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>.

Mouse Messages

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_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_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_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.

View Messages

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.

Window Messages

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

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_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.

BShelf Messages

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.
Creative Commons License
Legal Notice
This work is licensed under a Creative Commons Attribution-Non commercial-No Derivative Works 3.0 License.