diff --git a/PInvoke/Ole/Ole32/OleIdl.cs b/PInvoke/Ole/Ole32/OleIdl.cs
index 2122a097..b7c51700 100644
--- a/PInvoke/Ole/Ole32/OleIdl.cs
+++ b/PInvoke/Ole/Ole32/OleIdl.cs
@@ -127,6 +127,166 @@ namespace Vanara.PInvoke
OLEGETMONIKER_TEMPFORUSER,
}
+ ///
+ /// Describes 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.
+ ///
+ // https://docs.microsoft.com/en-us/windows/win32/api/oleidl/ne-oleidl-olemisc typedef enum tagOLEMISC { OLEMISC_RECOMPOSEONRESIZE,
+ // OLEMISC_ONLYICONIC, OLEMISC_INSERTNOTREPLACE, OLEMISC_STATIC, OLEMISC_CANTLINKINSIDE, OLEMISC_CANLINKBYOLE1,
+ // OLEMISC_ISLINKOBJECT, OLEMISC_INSIDEOUT, OLEMISC_ACTIVATEWHENVISIBLE, OLEMISC_RENDERINGISDEVICEINDEPENDENT,
+ // OLEMISC_INVISIBLEATRUNTIME, OLEMISC_ALWAYSRUN, OLEMISC_ACTSLIKEBUTTON, OLEMISC_ACTSLIKELABEL, OLEMISC_NOUIACTIVATE,
+ // OLEMISC_ALIGNABLE, OLEMISC_SIMPLEFRAME, OLEMISC_SETCLIENTSITEFIRST, OLEMISC_IMEMODE, OLEMISC_IGNOREACTIVATEWHENVISIBLE,
+ // OLEMISC_WANTSTOMENUMERGE, OLEMISC_SUPPORTSMULTILEVELUNDO } OLEMISC;
+ [PInvokeData("oleidl.h", MSDNShortId = "0a90d126-fc28-460c-8eaf-cf98ae998f95")]
+ public enum OLEMISC
+ {
+ ///
+ /// 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_RECOMPOSEONRESIZE,
+
+ ///
+ /// The object has no useful content view other than its icon. From the user's perspective, the Display As Icon check box (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_ONLYICONIC,
+
+ ///
+ /// 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_INSERTNOTREPLACE,
+
+ ///
+ /// This object is a static object, which is an object that contains only a presentation; it contains no native data. See OleCreateStaticFromData.
+ ///
+ OLEMISC_STATIC,
+
+ ///
+ /// 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_CANTLINKINSIDE,
+
+ ///
+ /// 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_CANLINKBYOLE1,
+
+ ///
+ /// 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_ISLINKOBJECT,
+
+ ///
+ /// 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_INSIDEOUT,
+
+ ///
+ /// 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_ACTIVATEWHENVISIBLE,
+
+ /// This object does not pay any attention to target devices. Its presention data will be the same in all cases.
+ OLEMISC_RENDERINGISDEVICEINDEPENDENT,
+
+ ///
+ /// 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_INVISIBLEATRUNTIME,
+
+ ///
+ /// 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_ALWAYSRUN,
+
+ ///
+ /// 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_ACTSLIKEBUTTON,
+
+ ///
+ /// 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_ACTSLIKELABEL,
+
+ ///
+ /// 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_NOUIACTIVATE,
+
+ ///
+ /// 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_ALIGNABLE,
+
+ ///
+ /// 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_SIMPLEFRAME,
+
+ ///
+ /// 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_SETCLIENTSITEFIRST,
+
+ ///
+ /// 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_IMEMODE,
+
+ ///
+ /// 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_IGNOREACTIVATEWHENVISIBLE,
+
+ /// A control that can merge its menu with its container sets this value.
+ OLEMISC_WANTSTOMENUMERGE,
+
+ /// A control that supports multi-level undo sets this value.
+ OLEMISC_SUPPORTSMULTILEVELUNDO
+ }
+
/// Indicates the type of caching requested for newly created objects.
// https://docs.microsoft.com/en-us/windows/win32/api/oleidl/ne-oleidl-olerender typedef enum tagOLERENDER { OLERENDER_NONE,
// OLERENDER_DRAW, OLERENDER_FORMAT, OLERENDER_ASIS } OLERENDER;