using System; using System.Runtime.InteropServices; namespace Vanara.PInvoke { public static partial class Shell32 { /// The view mode of the band object. This is one of the following values. [PInvokeData("shobjidl_core.h", MSDNShortId = "NN:shobjidl_core.IDeskBand")] [Flags] public enum DBIF : uint { /// Band object is displayed in a horizontal band. DBIF_VIEWMODE_NORMAL = 0x0000, /// Band object is displayed in a vertical band. DBIF_VIEWMODE_VERTICAL = 0x0001, /// Band object is displayed in a floating band. DBIF_VIEWMODE_FLOATING = 0x0002, /// Band object is displayed in a transparent band. DBIF_VIEWMODE_TRANSPARENT = 0x0004 } /// /// The set of flags that determine which members of this structure are being requested by the caller. One or more of the following values: /// [PInvokeData("shobjidl_core.h", MSDNShortId = "NS:shobjidl_core.DESKBANDINFO")] [Flags] public enum DBIM : uint { /// ptMinSize is requested. DBIM_MINSIZE = 0x0001, /// ptMaxSize is requested. DBIM_MAXSIZE = 0x0002, /// ptIntegral is requested. DBIM_INTEGRAL = 0x0004, /// ptActual is requested. DBIM_ACTUAL = 0x0008, /// wszTitle is requested. DBIM_TITLE = 0x0010, /// dwModeFlags is requested. DBIM_MODEFLAGS = 0x0020, /// crBkgnd is requested. DBIM_BKCOLOR = 0x0040 } /// /// A value that receives a set of flags that specify the mode of operation for the band object. One or more of the following values: /// [PInvokeData("shobjidl_core.h", MSDNShortId = "NS:shobjidl_core.DESKBANDINFO")] [Flags] public enum DBIMF : uint { /// The band uses default properties. The other mode flags modify this flag. DBIMF_NORMAL = 0x0000, /// /// Windows XP and later: The band object is of a fixed sized and position. With this flag, a sizing grip is not displayed on the /// band object. /// DBIMF_FIXED = 0x0001, /// /// DBIMF_FIXEDBMP Windows XP and later: The band object uses a fixed bitmap (.bmp) file as its background. Note that backgrounds /// are not supported in all cases, so the bitmap may not be seen even when this flag is set. /// DBIMF_FIXEDBMP = 0x0004, /// /// The height of the band object can be changed. The ptIntegral member defines the step value by which the band object can be resized. /// DBIMF_VARIABLEHEIGHT = 0x0008, /// Windows XP and later: The band object cannot be removed from the band container. DBIMF_UNDELETEABLE = 0x0010, /// The band object is displayed with a sunken appearance. DBIMF_DEBOSSED = 0x0020, /// The band is displayed with the background color specified in crBkgnd. DBIMF_BKCOLOR = 0x0040, /// /// Windows XP and later: If the full band object cannot be displayed (that is, the band object is smaller than ptActual, a chevron /// is shown to indicate that there are more options available. These options are displayed when the chevron is clicked. /// DBIMF_USECHEVRON = 0x0080, /// Windows XP and later: The band object is displayed in a new row in the band container. DBIMF_BREAK = 0x0100, /// Windows XP and later: The band object is the first object in the band container. DBIMF_ADDTOFRONT = 0x0200, /// Windows XP and later: The band object is displayed in the top row of the band container. DBIMF_TOPALIGN = 0x0400, /// Windows Vista and later: No sizing grip is ever displayed to allow the user to move or resize the band object. DBIMF_NOGRIPPER = 0x0800, /// /// Windows Vista and later: A sizing grip that allows the user to move or resize the band object is always shown, even if that band /// object is the only one in the container. /// DBIMF_ALWAYSGRIPPER = 0x1000, /// Windows Vista and later: The band object should not display margins. DBIMF_NOMARGINS = 0x2000 } /// /// Used to obtain information about a band object. /// /// Important You should use thumbnail toolbars in new development in place of desk bands, which are not supported as of Windows 7. /// /// /// /// This interface also provides the methods of the IOleWindow and IDockingWindow interfaces, from which it inherits. /// When to Implement /// Implement IDeskBand if you are implementing a band object. /// When to Use /// /// You do not call this interface directly. IDeskBand is used by the Shell or the browser to obtain display information for a /// band object. /// /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-ideskband [PInvokeData("shobjidl_core.h", MSDNShortId = "NN:shobjidl_core.IDeskBand")] [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("EB0FE172-1A3A-11D0-89B3-00A0C90A90AC")] public interface IDeskBand : IDockingWindow { /// /// Retrieves a handle to one of the windows participating in in-place activation (frame, document, parent, or in-place object window). /// /// A pointer to a variable that receives the window handle. /// /// This method returns S_OK on success. Other possible return values include the following. /// /// /// Return code /// Description /// /// /// E_FAIL /// The object is windowless. /// /// /// E_OUTOFMEMORY /// There is insufficient memory available for this operation. /// /// /// E_UNEXPECTED /// An unexpected error has occurred. /// /// /// /// /// /// Five types of windows comprise the windows hierarchy. When a object is active in place, it has access to some or all of these windows. /// /// /// /// Window /// Description /// /// /// Frame /// The outermost main window where the container application's main menu resides. /// /// /// Document /// The window that displays the compound document containing the embedded object to the user. /// /// /// Pane /// /// The subwindow of the document window that contains the object's view. Applicable only for applications with split-pane windows. /// /// /// /// Parent /// /// The container window that contains that object's view. The object application installs its window as a child of this window. /// /// /// /// In-place /// /// The window containing the active in-place object. The object application creates this window and installs it as a child of its /// hatch window, which is a child of the container's parent window. /// /// /// /// /// Each type of window has a different role in the in-place activation architecture. However, it is not necessary to employ a /// separate physical window for each type. Many container applications use the same window for their frame, document, pane, and /// parent windows. /// /// [PreserveSig] new HRESULT GetWindow(out HWND phwnd); /// Determines whether context-sensitive help mode should be entered during an in-place activation session. /// if help mode should be entered; if it should be exited. /// /// /// This method returns S_OK if the help mode was entered or exited successfully, depending on the value passed in . Other possible return values include the following.
///
/// /// /// Return code /// Description /// /// /// E_INVALIDARG /// The specified value is not valid. /// /// /// E_OUTOFMEMORY /// There is insufficient memory available for this operation. /// /// /// E_UNEXPECTED /// An unexpected error has occurred. /// /// ///
/// /// Applications can invoke context-sensitive help when the user: /// /// presses SHIFT+F1, then clicks a topic /// presses F1 when a menu item is selected /// /// /// When SHIFT+F1 is pressed, either the frame or active object can receive the keystrokes. If the container's frame receives the /// keystrokes, it calls its containing document's IOleWindow::ContextSensitiveHelp method with set to /// . This propagates the help state to all of its in-place objects so they can correctly handle the mouse /// click or WM_COMMAND. /// /// /// If an active object receives the SHIFT+F1 keystrokes, it calls the container's IOleWindow::ContextSensitiveHelp method with /// set to , which then recursively calls each of its in-place sites until there /// are no more to be notified. The container then calls its document's or frame's IOleWindow::ContextSensitiveHelp method with /// set to . /// /// When in context-sensitive help mode, an object that receives the mouse click can either: /// /// Ignore the click if it does not support context-sensitive help. /// /// Tell all the other objects to exit context-sensitive help mode with ContextSensitiveHelp set to FALSE and then provide help for /// that context. /// /// /// /// An object in context-sensitive help mode that receives a WM_COMMAND should tell all the other in-place objects to exit /// context-sensitive help mode and then provide help for the command. /// /// /// If a container application is to support context-sensitive help on menu items, it must either provide its own message filter so /// that it can intercept the F1 key or ask the OLE library to add a message filter by calling OleSetMenuDescriptor, passing valid, /// non-NULL values for the lpFrame and lpActiveObj parameters. /// /// [PreserveSig] new HRESULT ContextSensitiveHelp([MarshalAs(UnmanagedType.Bool)] bool fEnterMode); /// Instructs the docking window object to show or hide itself. /// /// Type: BOOL /// /// TRUE if the docking window object should show its window. FALSE if the docking window object should hide its /// window and return its border space by calling SetBorderSpaceDW with zero values. /// /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-idockingwindow-showdw HRESULT ShowDW( BOOL // fShow ); [PreserveSig] new HRESULT ShowDW([MarshalAs(UnmanagedType.Bool)] bool fShow); /// /// Notifies the docking window object that it is about to be removed from the frame. The docking window object should save any /// persistent information at this time. /// /// /// Type: DWORD /// Reserved. This parameter should always be zero. /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-idockingwindow-closedw HRESULT CloseDW( DWORD // dwReserved ); [PreserveSig] new HRESULT CloseDW(uint dwReserved); /// /// Notifies the docking window object that the frame's border space has changed. In response to this method, the IDockingWindow /// implementation must call SetBorderSpaceDW, even if no border space is required or a change is not necessary. /// /// /// Type: LPCRECT /// Pointer to a RECT structure that contains the frame's available border space. /// /// /// Type: IUnknown* /// /// Pointer to the site's IUnknown interface. The docking window object should call the QueryInterface method for this interface, /// requesting IID_IDockingWindowSite. The docking window object then uses that interface to negotiate its border space. It is the /// docking window object's responsibility to release this interface when it is no longer needed. /// /// /// /// Type: BOOL /// Reserved. This parameter should always be zero. /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// /// /// /// The prcBorder parameter contains the frame's entire available border space. The docking window object should negotiate its /// border space and then use this information to position itself. /// /// /// For example, if the docking window object requires 25 pixels at the top of the border space, it should negotiate for this /// through the following steps: /// /// /// /// Allocate a BORDERWIDTHS structure and set its top member to 25. /// /// /// Call RequestBorderSpaceDW to request the space. /// /// /// If the request is approved by RequestBorderSpaceDW, call SetBorderSpaceDW to allocate the space. /// /// /// /// The docking window object can then position its window at prcBorder->left and prcBorder->top. The width of the docking /// window object's window is determined by subtracting prcBorder->left from prcBorder->right. Its height is contained in the /// top member of the BORDERWIDTHS structure. /// /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-idockingwindow-resizeborderdw HRESULT // ResizeBorderDW( LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved ); [PreserveSig] new HRESULT ResizeBorderDW([In, Optional] PRECT prcBorder, [In, Optional, MarshalAs(UnmanagedType.IUnknown)] object punkToolbarSite, [MarshalAs(UnmanagedType.Bool)] bool fReserved = false); /// /// Gets state information for a band object. /// /// Important You should use thumbnail toolbars in new development in place of desk bands, which are not supported as of /// Windows 7. /// /// /// /// Type: DWORD /// The identifier of the band, assigned by the container. The band object can retain this value if it is required. /// /// /// Type: DWORD /// The view mode of the band object. One of the following values: /// DBIF_VIEWMODE_NORMAL /// The band object is being displayed in a horizontal band. /// DBIF_VIEWMODE_VERTICAL /// The band object is being displayed in a vertical band. /// DBIF_VIEWMODE_FLOATING /// The band object is being displayed in a floating band. /// DBIF_VIEWMODE_TRANSPARENT /// The band object is being displayed in a transparent band. /// /// /// Type: DESKBANDINFO* /// /// Pointer to a DESKBANDINFO structure that receives the band information for the object. The dwMask member of this /// structure indicates the specific information that is being requested. /// /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ideskband-getbandinfo HRESULT GetBandInfo( // DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi ); [PreserveSig] HRESULT GetBandInfo(uint dwBandID, DBIF dwViewMode, ref DESKBANDINFO pdbi); } /// /// Exposes methods to enable and query translucency effects in a deskband object. /// /// Important You should use thumbnail toolbars in new development in place of desk bands, which are not supported as of Windows 7. /// /// /// /// This interface also provides the methods of the IOleWindow, IDockingWindow, and IDeskBand interfaces, from which it inherits. /// /// If implemented in all active deskbands, this interface allows the taskbar to be displayed using translucent effects. If an active /// deskband does not implement IDeskBand2, then translucency is disabled for the entire taskbar. /// /// A deskband can implement IDeskBand2 as a communication conduit between itself and the taskbar as follows: /// /// /// /// Taskbar calls IDeskBand2::CanRenderComposited to learn if a deskband supports translucency. If one or more do not, the entire /// taskbar is rendered opaque. /// /// /// /// /// Taskbar calls IDeskBand2::SetCompositionState as appropriate in response to a user turning translucent effects on or off. The /// taskbar should attempt to render itself translucent or opaque in response to this call. /// /// /// /// IDeskBand2::GetCompositionState is the counterpart of IDeskBand2::SetCompositionState. /// /// /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl/nn-shobjidl-ideskband2 [PInvokeData("shobjidl.h", MSDNShortId = "NN:shobjidl.IDeskBand2")] [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("79D16DE4-ABEE-4021-8D9D-9169B261D657")] public interface IDeskBand2 : IDeskBand { /// /// Retrieves a handle to one of the windows participating in in-place activation (frame, document, parent, or in-place object window). /// /// A pointer to a variable that receives the window handle. /// /// This method returns S_OK on success. Other possible return values include the following. /// /// /// Return code /// Description /// /// /// E_FAIL /// The object is windowless. /// /// /// E_OUTOFMEMORY /// There is insufficient memory available for this operation. /// /// /// E_UNEXPECTED /// An unexpected error has occurred. /// /// /// /// /// /// Five types of windows comprise the windows hierarchy. When a object is active in place, it has access to some or all of these windows. /// /// /// /// Window /// Description /// /// /// Frame /// The outermost main window where the container application's main menu resides. /// /// /// Document /// The window that displays the compound document containing the embedded object to the user. /// /// /// Pane /// /// The subwindow of the document window that contains the object's view. Applicable only for applications with split-pane windows. /// /// /// /// Parent /// /// The container window that contains that object's view. The object application installs its window as a child of this window. /// /// /// /// In-place /// /// The window containing the active in-place object. The object application creates this window and installs it as a child of its /// hatch window, which is a child of the container's parent window. /// /// /// /// /// Each type of window has a different role in the in-place activation architecture. However, it is not necessary to employ a /// separate physical window for each type. Many container applications use the same window for their frame, document, pane, and /// parent windows. /// /// [PreserveSig] new HRESULT GetWindow(out HWND phwnd); /// Determines whether context-sensitive help mode should be entered during an in-place activation session. /// if help mode should be entered; if it should be exited. /// /// /// This method returns S_OK if the help mode was entered or exited successfully, depending on the value passed in . Other possible return values include the following.
///
/// /// /// Return code /// Description /// /// /// E_INVALIDARG /// The specified value is not valid. /// /// /// E_OUTOFMEMORY /// There is insufficient memory available for this operation. /// /// /// E_UNEXPECTED /// An unexpected error has occurred. /// /// ///
/// /// Applications can invoke context-sensitive help when the user: /// /// presses SHIFT+F1, then clicks a topic /// presses F1 when a menu item is selected /// /// /// When SHIFT+F1 is pressed, either the frame or active object can receive the keystrokes. If the container's frame receives the /// keystrokes, it calls its containing document's IOleWindow::ContextSensitiveHelp method with set to /// . This propagates the help state to all of its in-place objects so they can correctly handle the mouse /// click or WM_COMMAND. /// /// /// If an active object receives the SHIFT+F1 keystrokes, it calls the container's IOleWindow::ContextSensitiveHelp method with /// set to , which then recursively calls each of its in-place sites until there /// are no more to be notified. The container then calls its document's or frame's IOleWindow::ContextSensitiveHelp method with /// set to . /// /// When in context-sensitive help mode, an object that receives the mouse click can either: /// /// Ignore the click if it does not support context-sensitive help. /// /// Tell all the other objects to exit context-sensitive help mode with ContextSensitiveHelp set to FALSE and then provide help for /// that context. /// /// /// /// An object in context-sensitive help mode that receives a WM_COMMAND should tell all the other in-place objects to exit /// context-sensitive help mode and then provide help for the command. /// /// /// If a container application is to support context-sensitive help on menu items, it must either provide its own message filter so /// that it can intercept the F1 key or ask the OLE library to add a message filter by calling OleSetMenuDescriptor, passing valid, /// non-NULL values for the lpFrame and lpActiveObj parameters. /// /// [PreserveSig] new HRESULT ContextSensitiveHelp([MarshalAs(UnmanagedType.Bool)] bool fEnterMode); /// Instructs the docking window object to show or hide itself. /// /// Type: BOOL /// /// TRUE if the docking window object should show its window. FALSE if the docking window object should hide its /// window and return its border space by calling SetBorderSpaceDW with zero values. /// /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-idockingwindow-showdw HRESULT ShowDW( BOOL // fShow ); [PreserveSig] new HRESULT ShowDW([MarshalAs(UnmanagedType.Bool)] bool fShow); /// /// Notifies the docking window object that it is about to be removed from the frame. The docking window object should save any /// persistent information at this time. /// /// /// Type: DWORD /// Reserved. This parameter should always be zero. /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-idockingwindow-closedw HRESULT CloseDW( DWORD // dwReserved ); [PreserveSig] new HRESULT CloseDW(uint dwReserved); /// /// Notifies the docking window object that the frame's border space has changed. In response to this method, the IDockingWindow /// implementation must call SetBorderSpaceDW, even if no border space is required or a change is not necessary. /// /// /// Type: LPCRECT /// Pointer to a RECT structure that contains the frame's available border space. /// /// /// Type: IUnknown* /// /// Pointer to the site's IUnknown interface. The docking window object should call the QueryInterface method for this interface, /// requesting IID_IDockingWindowSite. The docking window object then uses that interface to negotiate its border space. It is the /// docking window object's responsibility to release this interface when it is no longer needed. /// /// /// /// Type: BOOL /// Reserved. This parameter should always be zero. /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// /// /// /// The prcBorder parameter contains the frame's entire available border space. The docking window object should negotiate its /// border space and then use this information to position itself. /// /// /// For example, if the docking window object requires 25 pixels at the top of the border space, it should negotiate for this /// through the following steps: /// /// /// /// Allocate a BORDERWIDTHS structure and set its top member to 25. /// /// /// Call RequestBorderSpaceDW to request the space. /// /// /// If the request is approved by RequestBorderSpaceDW, call SetBorderSpaceDW to allocate the space. /// /// /// /// The docking window object can then position its window at prcBorder->left and prcBorder->top. The width of the docking /// window object's window is determined by subtracting prcBorder->left from prcBorder->right. Its height is contained in the /// top member of the BORDERWIDTHS structure. /// /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-idockingwindow-resizeborderdw HRESULT // ResizeBorderDW( LPCRECT prcBorder, IUnknown *punkToolbarSite, BOOL fReserved ); [PreserveSig] new HRESULT ResizeBorderDW([In, Optional] PRECT prcBorder, [In, Optional, MarshalAs(UnmanagedType.IUnknown)] object punkToolbarSite, [MarshalAs(UnmanagedType.Bool)] bool fReserved = false); /// /// Gets state information for a band object. /// /// Important You should use thumbnail toolbars in new development in place of desk bands, which are not supported as of /// Windows 7. /// /// /// /// Type: DWORD /// The identifier of the band, assigned by the container. The band object can retain this value if it is required. /// /// /// Type: DWORD /// The view mode of the band object. One of the following values: /// DBIF_VIEWMODE_NORMAL /// The band object is being displayed in a horizontal band. /// DBIF_VIEWMODE_VERTICAL /// The band object is being displayed in a vertical band. /// DBIF_VIEWMODE_FLOATING /// The band object is being displayed in a floating band. /// DBIF_VIEWMODE_TRANSPARENT /// The band object is being displayed in a transparent band. /// /// /// Type: DESKBANDINFO* /// /// Pointer to a DESKBANDINFO structure that receives the band information for the object. The dwMask member of this /// structure indicates the specific information that is being requested. /// /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-ideskband-getbandinfo HRESULT GetBandInfo( // DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO *pdbi ); [PreserveSig] new HRESULT GetBandInfo(uint dwBandID, DBIF dwViewMode, ref DESKBANDINFO pdbi); /// /// Indicates the deskband's ability to be displayed as translucent. /// /// Important You should use thumbnail toolbars in new development in place of desk bands, which are not supported as of /// Windows 7. /// /// /// /// Type: BOOL* /// When this method returns, contains a BOOL indicating ability. /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl/nf-shobjidl-ideskband2-canrendercomposited HRESULT // CanRenderComposited( BOOL *pfCanRenderComposited ); [PreserveSig] HRESULT CanRenderComposited([MarshalAs(UnmanagedType.Bool)] out bool pfCanRenderComposited); /// /// Sets the composition state. /// /// Important You should use thumbnail toolbars in new development in place of desk bands, which are not supported as of /// Windows 7. /// /// /// /// Type: BOOL /// TRUE to enable the composition state; otherwise, FALSE. /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl/nf-shobjidl-ideskband2-setcompositionstate HRESULT // SetCompositionState( BOOL fCompositionEnabled ); [PreserveSig] HRESULT SetCompositionState([MarshalAs(UnmanagedType.Bool)] bool fCompositionEnabled); /// /// Gets the composition state. /// /// Important You should use thumbnail toolbars in new development in place of desk bands, which are not supported as of /// Windows 7. /// /// /// /// Type: BOOL* /// When this method returns, contains a BOOL that indicates state. /// /// /// Type: HRESULT /// If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. /// // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl/nf-shobjidl-ideskband2-getcompositionstate HRESULT // GetCompositionState( BOOL *pfCompositionEnabled ); [PreserveSig] HRESULT GetCompositionState([MarshalAs(UnmanagedType.Bool)] out bool pfCompositionEnabled); } /// Receives information about a band object. This structure is used with the deprecated IDeskBand::GetBandInfo method. // https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/ns-shobjidl_core-deskbandinfo typedef struct DESKBANDINFO { DWORD // dwMask; POINTL ptMinSize; POINTL ptMaxSize; POINTL ptIntegral; POINTL ptActual; WCHAR wszTitle[256]; DWORD dwModeFlags; COLORREF // crBkgnd; } DESKBANDINFO; [PInvokeData("shobjidl_core.h", MSDNShortId = "NS:shobjidl_core.DESKBANDINFO")] [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct DESKBANDINFO { /// /// Type: DWORD /// /// The set of flags that determine which members of this structure are being requested by the caller. One or more of the following values: /// /// DBIM_MINSIZE /// ptMinSize is requested. /// DBIM_MAXSIZE /// ptMaxSize is requested. /// DBIM_INTEGRAL /// ptIntegral is requested. /// DBIM_ACTUAL /// ptActual is requested. /// DBIM_TITLE /// wszTitle is requested. /// DBIM_MODEFLAGS /// dwModeFlags is requested. /// DBIM_BKCOLOR /// crBkgnd is requested. /// public DBIM dwMask; /// /// Type: POINTL /// /// A POINTL structure that receives the minimum size of the band object. The minimum width is given in the POINTL /// structure's x member and the minimum height is given in the y member. /// /// public SIZE ptMinSize; /// /// Type: POINTL /// /// A POINTL structure that receives the maximum size of the band object. The maximum height is given in the POINTL /// structure's y member and the x member is ignored. If the band object has no limit for its maximum height, (LONG)-1 /// should be used. /// /// public SIZE ptMaxSize; /// /// Type: POINTL /// /// A POINTL structure that receives the sizing step value (increment) in which the band object is resized. The vertical step value /// is given in the POINTL structure's y member and the x member is ignored. /// /// The dwModeFlags member must contain the DBIMF_VARIABLEHEIGHT flag; otherwise, ptIntegral is ignored. /// public SIZE ptIntegral; /// /// Type: POINTL /// /// A POINTL structure that receives the ideal size of the band object. The ideal width is given in the POINTL structure's /// x member and the ideal height is given in the y member. The band container attempts to use these values, but the /// band is not guaranteed to be this size. /// /// public SIZE ptActual; /// /// Type: WCHAR[256] /// A WCHAR buffer that receives the title of the band. /// [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string wszTitle; /// /// Type: DWORD /// /// A value that receives a set of flags that specify the mode of operation for the band object. One or more of the following values: /// /// DBIMF_NORMAL /// The band uses default properties. The other mode flags modify this flag. /// DBIMF_FIXED /// /// Windows XP and later: The band object is of a fixed sized and position. With this flag, a sizing grip is not displayed on /// the band object. /// /// DBIMF_FIXEDBMP /// /// Windows XP and later: The band object uses a fixed bitmap (.bmp) file as its background. Note that backgrounds are not /// supported in all cases, so the bitmap may not be seen even when this flag is set. /// /// DBIMF_VARIABLEHEIGHT /// /// The height of the band object can be changed. The ptIntegral member defines the step value by which the band object can /// be resized. /// /// DBIMF_UNDELETEABLE /// Windows XP and later: The band object cannot be removed from the band container. /// DBIMF_DEBOSSED /// The band object is displayed with a sunken appearance. /// DBIMF_BKCOLOR /// The band is displayed with the background color specified in crBkgnd. /// DBIMF_USECHEVRON /// /// Windows XP and later: If the full band object cannot be displayed (that is, the band object is smaller than /// ptActual, a chevron is shown to indicate that there are more options available. These options are displayed when the /// chevron is clicked. /// /// DBIMF_BREAK /// Windows XP and later: The band object is displayed in a new row in the band container. /// DBIMF_ADDTOFRONT /// Windows XP and later: The band object is the first object in the band container. /// DBIMF_TOPALIGN /// Windows XP and later: The band object is displayed in the top row of the band container. /// DBIMF_NOGRIPPER /// Windows Vista and later: No sizing grip is ever displayed to allow the user to move or resize the band object. /// DBIMF_ALWAYSGRIPPER /// /// Windows Vista and later: A sizing grip that allows the user to move or resize the band object is always shown, even if /// that band object is the only one in the container. /// /// DBIMF_NOMARGINS /// Windows Vista and later: The band object should not display margins. /// public DBIMF dwModeFlags; /// /// Type: COLORREF /// /// A COLORREF structure that receives the background color of the band. The dwModeFlags member must contain the /// DBIMF_BKCOLOR flag; otherwise, crBkgnd is ignored. /// /// public COLORREF crBkgnd; } } }