The scale item can be used to show the state of a variable that ranges between a set of values. These items are similar to scroll bars except that they also allow the attachment of moving labels and implement the Motiff scale item within MicroStation.
The DialogItemRsc field extent specifies the location of the scale. The x position specifies the left edge and the y position specifies the top edge of the scale. The orientation of the scale depends on the width and height fields. If width is 0, the scale handler will make a vertical scale. If height is 0, a horizontal scale will be created. Both the width and height cannot be 0.
The type field should be Scale.
The ID determines the DItem_ScaleRsc instance to load.
The attributes field can be ON or OFF and optionally combined with HIDDEN. It will usually be ON.
The itemArg field is unused and should usually be set to 0.
The label field can override the label contained in the DItem_ScaleRsc instance.
The auxInfo field can currently override only the access string contained in the DItem_ScaleRsc instance.
The following is an example of a scale item list specification:
The scroll bar item is defined in a resource file with the following structure:
The DItem_ScaleRsc structure has the following unique fields. See CommonItemResourceFields for a description of any field not in this table.
|minValue||Specifies the value associated with the minimum position of the scale slider.|
|maxValue||Specifies the value associated with the maximum position of the scale slider.|
|incAmount||Specifies the amount the current value of the scale is changed when the user clicks on the scale arrows.|
|pageIncAmount||Specifies the amount the current value of the scale is changed when the user clicks in the page area of the scale. The page areas are the areas between the slider and the scale arrows.|
|associatedTextId||This field specifies the resource ID of a text item that will be associated with the scale item. As the user drags the mouse on the slider, the associated text item will be dynamically set to the value of the scale based upon it's current slider position.|
|attributes||Specifies the attributes of the scale item. It is constructed by combining the constants from the attributes table (below) with the logical OR operator.|
|formatToDisplay||An sprintf format string to convert the value of the scale item into a display value when the SCALE_SHOWVALUE attribute is used.|
|minLabel||A string which should be used as the label for the minimum value of the scale item.|
|maxLabel||A string which should be used as the label for the maximum value of the scale item.|
The following table lists possible values for the attributes field (described above) and the meaning of those values:
|SCALE_HASARROWS||Indicates that the scale item should be drawn with single step adjustment arrows at each end of the scale.|
|SCALE_SHOWVALUE||Indicates that the current scale value should be displayed alongside the slider.|
|SCALE_LIMITSONSIDE||Indicates that the range limits for the scale are to be displayed at the side of the scale item and not at the ends. By default, scale ranges are displayed at the ends of the scale item. Limits are most commonly placed on the side when the scale is vertically oriented.|
The following is an example of a scale item resource. This item is used in the Color Palette dialog box, and is defined in MicroStation's resource file.
The following messages are sent to item hook functions attached to scale items:
DITEM_MESSAGE_CREATE DITEM_MESSAGE_INIT DITEM_MESSAGE_DESTROY DITEM_MESSAGE_BUTTON DITEM_MESSAGE_GETSTATE DITEM_MESSAGE_SETSTATE DITEM_MESSAGE_SETVALUE DITEM_MESSAGE_STATECHANGED DITEM_MESSAGE_SYNCHRONIZE DITEM_MESSAGE_FOCUSIN DITEM_MESSAGE_FOCUSOUT DITEM_MESSAGE_KEYSTROKE DITEM_MESSAGE_POSTKEYSTROKE DITEM_MESSAGE_SYNCHRONIZE DITEM_MESSAGE_QUEUECOMMAND
RTYPE_Scale, Auxilliary message type SCALE_AUXMESSAGE_FORMATVALUE
The RTYPE_Scale message is used to allow the item hook function to display textual information as the current item value instead of the current scale item value. This message is only sent when the SCALE_SHOWVALUE attribute is set on the scale item. The message is sent to the hook function each time the item handler needs to display the current value of the scale item alongside the scale slider. The dimP->auxMessageType field will be set to SCALE_AUXMESSAGE_FORMATVALUE and the dimP->auxInfoP field will point to a buffer into which the hook function can place an ASCII string to be displayed as the current scale item value. The newitems MDL example application shows various usages of the scale item.
When handling the DITEM_MESSAGE_BUTTON message for a BUTTONTRANS_DOWN event, the item hook function can use a motion function (the u.button.motionfunc member) to allow the application to track cursor movement while the button is down.
There are no scale item functions.