# OLEMISC

The OLEMISC enumeration is a set of bitwise constants that can be combined to describe miscellaneous characteristics of an object or class of objects. A container can call the IOleObject::GetMiscStatus method to determine the OLEMISC bits set for an object. The values specified in an object server’s CLSID\MiscStatus entry in the registration database are based on the OLEMISC enumeration. These constants are also used in the dwStatus member of the OBJECTDESCRIPTOR structure.

    typedef enum tagOLEMISC // bitwise
    {
        OLEMISC_RECOMPOSEONRESIZE            = 1,
        OLEMISC_ONLYICONIC                   = 2,
        OLEMISC_INSERTNOTREPLACE             = 4,
        OLEMISC_STATIC                       = 8,
        OLEMISC_CANTLINKINSIDE               = 16,
        OLEMISC_CANLINKBYOLE1                = 32,
        OLEMISC_ISLINKOBJECT                 = 64,
        OLEMISC_INSIDEOUT                    = 128,
        OLEMISC_ACTIVATEWHENVISIBLE          = 256,
        OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512,
        OLEMISC_INVISIBLEATRUNTIME           = 1024
        OLEMISC_ALWAYSRUN                    = 2048,
        OLEMISC_ACTSLIKEBUTTON               = 4096,
        OLEMISC_ACTSLIKELABEL                = 8192,
        OLEMISC_NOUIACTIVATE                 = 16384,
        OLEMISC_ALIGNABLE                    = 32768,
        OLEMISC_SIMPLEFRAME                  = 65536,
        OLEMISC_SETCLIENTSITEFIRST           = 131072,
        OLEMISC_IMEMODE                      = 262144,
        OLEMISC_IGNOREACTIVATEWHENVISIBLE    = 524288,
        OLEMISC_WANTSTOMENUMERGE             = 1048576,
        OLEMISC_SUPPORTSMULTILEVELUNDO       = 2097152
    } OLEMISC;

Elements

OLEMISC_RECOMPOSEONRESIZE
  When the container resizes the space allocated to displaying one of the object’s presentations, the object wants to recompose the presentation. This means that on resize, the object wants to do more than scale its picture. If this bit is set, the container should force the object to the running state and call IOleObject::SetExtent with the new size.
OLEMISC_ONLYICONIC
  The object has no useful content view other than its icon. From the user’s perspective, the Display As Icon checkbox (in the Paste Special dialog box) for this object should always be checked, and should not be uncheckable. Note that such an object should still have a drawable content aspect; it will look the same as its icon view.
OLEMISC_INSERTNOTREPLACE
  The object has initialized itself from the data in the container’s current selection. Containers should examine this bit after calling IOleObject::InitFromData to initialize an object from the current selection. If set, the container should insert the object beside the current selection rather than replacing the current selection. If this bit is not set, the object being inserted replaces the current selection.
OLEMISC_STATIC
  This object is a static object, which is an object that contains only a presentation; it contains no native data. See OleCreateStaticFromData.
OLEMISC_CANTLINKINSIDE
  This object cannot be the link source that when bound to activates (runs) the object. If the object is selected and copied to the clipboard, the object’s container can offer a link in a clipboard data transfer that, when bound, must connect to the outside of the object. The user would see the object selected in its container, not open for editing. Rather than doing this, the container can simply refuse to offer a link source when transferring objects with this bit set. Examples of objects that have this bit set include OLE1 objects, static objects, and links.
OLEMISC_CANLINKBYOLE1
  This object can be linked to by OLE 1 containers. This bit is used in the dwStatus member of the OBJECTDESCRIPTOR structure transferred with the Object and Link Source Descriptor formats. An object can be linked to by OLE 1 containers if it is an untitled document, a file, or a selection of data within a file. Embedded objects or pseudo-objects that are contained within an embedded object cannot be linked to by OLE 1 containers (i.e., OLE 1 containers cannot link to link sources that, when bound, require more than one object server to be run.
OLEMISC_ISLINKOBJECT
  This object is a link object. This bit is significant to OLE 1 and is set by the OLE 2 link object; object applications have no need to set this bit.
OLEMISC_INSIDEOUT
  This object is capable of activating in-place, without requiring installation of menus and toolbars to run. Several such objects can be active concurrently. Some containers, such as forms, may choose to activate such objects automatically.
OLEMISC_ACTIVATEWHENVISIBLE
  This bit is set only when OLEMISC_INSIDEOUT is set, and indicates that this object prefers to be activated whenever it is visible. Some containers may always ignore this hint.
OLEMISC_RENDERINGISDEVICEINDEPENDENT
  This object does not pay any attention to target devices. Its presention data will be the same in all cases.
OLEMISC_INVISIBLEATRUNTIME
  This value is used with controls. It indicates that the control has no run-time user interface, but that it should be visible at design time. For example, a timer control that fires a specific event periodically would not show itself at run time, but it needs a design-time user interface so a form designer can set the event period and other properties.
OLEMISC_ALWAYSRUN
  This value is used with controls. It tells the container that this control always wants to be running. As a result, the container should call OleRun when loading or creating the object.
OLEMISC_ACTSLIKEBUTTON
  This value is used with controls. It indicates that the control is buttonlike in that it understands and obeys the container’s DisplayAsDefault ambient property.
OLEMISC_ACTSLIKELABEL
  This value is used with controls. It marks the control as a label for whatever control comes after it in the form’s ordering. Pressing a mnemonic key for a label control activates the control after it.
OLEMISC_NOUIACTIVATE
  This value is used with controls. It indicates that the control has no UI active state, meaning that it requires no in-place tools, no shared menu, and no accelerators. It also means that the control never needs the focus.
OLEMISC_ALIGNABLE
  This value is used with controls. It indicates that the control understands how to align itself within its display rectangle, according to alignment properties such as left, center, and right.
OLEMISC_SIMPLEFRAME
  This value is used with controls. It indicates that the control is a simple grouping of other controls and does little more than pass Windows messages to the control container managing the form. Controls of this sort require the implementation of ISimpleFrameSite on the container’s site.
OLEMISC_SETCLIENTSITEFIRST
  This value is used with controls. It indicates that the control wants to use IOleObject::SetClientSite as its initialization function, even before a call such as IPersistStreamInit::InitNew or IPersistStorage::InitNew. This allows the control to access a container’s ambient properties before loading information from persistent storage. Note that the current implementations of OleCreate, OleCreateFromData, OleCreateFromFile, OleLoad, and the default handler do not understand this value. Control containers that wish to honor this value must currently implement their own versions of these functions in order to establish the correct initialization sequence for the control.
OLEMISC_IMEMODE
  Obsolete. A control that works with an Input Method Editor (IME) system component can control the state of the IME through the IMEMode property rather than using this value in the OLEMISC enumeration. You can use an IME component to enter information in Asian character sets with a regular keyboard. A Japanese IME, for example, allows you to type a word such as “sushi,” on a regular keyboard and when you hit the spacebar, the IME component converts that word to appropriate kanji or proposes possible choices. The OLEMISC_IMEMODE value was previously used to mark a control as capable of controlling an IME mode system component.
OLEMISC_IGNOREACTIVATEWHENVISIBLE
  For new ActiveX controls to work in an older container, the control may need to have the OLEMISC_ACTIVATEWHENVISIBLE value set. However, in a newer container that understands and uses IPointerInactive, the control does not wish to be in-place activated when it becomes visible. To allow the control to work in both kinds of containers, the control can set this value. Then, the container ignores OLEMISC_ACTIVATEWHENVISIBLE and does not in-place activate the control when it becomes visible.
OLEMISC_WANTSTOMENUMERGE
  A control that can merge its menu with its container sets this value.
OLEMISC_SUPPORTSMULTILEVELUNDO
  A control that supports multi-level undo sets this value.

See Also

IOleObject::GetMiscStatus, OBJECTDESCRIPTOR