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;