/// <summary><para>The set of bit flags that specifies the type of image list to create. This parameter can be a combination of the following values, but it can include only one of the ILC_COLOR values. Used by <c>ImageList_Create</c> and <c>IImageList2::Initialize</c>.</para><para><list type="table"><listheader><term>Constant/value</term><term>Description</term></listheader><item><term>ILC_MASK0x00000001</term><term>Use a mask. The image list contains two bitmaps, one of which is a monochrome bitmap used as a mask. If this value is not included, the image list contains only one bitmap.</term></item><item><term>ILC_COLOR0x00000000</term><term>Use the default behavior if none of the other ILC_COLORx flags is specified. Typically, the default is ILC_COLOR4, but for older display drivers, the default is ILC_COLORDDB.</term></item><item><term>ILC_COLORDDB0x000000FE</term><term>Use a device-dependent bitmap.</term></item><item><term>ILC_COLOR40x00000004</term><term>Use a 4-bit (16-color) device-independent bitmap (DIB) section as the bitmap for the image list.</term></item><item><term>ILC_COLOR80x00000008</term><term>Use an 8-bit DIB section. The colors used for the color table are the same colors as the halftone palette.</term></item><item><term>ILC_COLOR160x00000010</term><term>Use a 16-bit (32/64k-color) DIB section.</term></item><item><term>ILC_COLOR240x00000018</term><term>Use a 24-bit DIB section.</term></item><item><term>ILC_COLOR320x00000020</term><term>Use a 32-bit DIB section.</term></item><item><term>ILC_PALETTE0x00000800</term><term>Not implemented.</term></item><item><term>ILC_MIRROR0x00002000</term><term>Mirror the icons contained, if the process is mirrored</term></item><item><term>ILC_PERITEMMIRROR0x00008000</term><term>Causes the mirroring code to mirror each item when inserting a set of images, versus the whole strip.</term></item><item><term>ILC_ORIGINALSIZE0x00010000</term><term>Windows Vista and later. Imagelist should accept smaller than set images and apply original size based on image added.</term></item><item><term>ILC_HIGHQUALITYSCALE0x00020000</term><term>Windows Vista and later. Reserved.</term></item></list></para></summary><returns></returns>
/// <summary>Use a mask. The image list contains two bitmaps, one of which is a monochrome bitmap used as a mask. If this value is not included, the image list contains only one bitmap.</summary>
ILC_MASK=0x00000001,
/// <summary>Use the default behavior if none of the other ILC_COLORx flags is specified. Typically, the default is ILC_COLOR4, but for older display drivers, the default is ILC_COLORDDB.</summary>
ILC_COLOR=0x00000000,
/// <summary>Use a device-dependent bitmap.</summary>
ILC_COLORDDB=0x000000FE,
/// <summary>Use a 4-bit (16-color) device-independent bitmap (DIB) section as the bitmap for the image list.</summary>
ILC_COLOR4=0x00000004,
/// <summary>Use an 8-bit DIB section. The colors used for the color table are the same colors as the halftone palette.</summary>
ILC_COLOR8=0x00000008,
/// <summary>Use a 16-bit (32/64k-color) DIB section.</summary>
ILC_COLOR16=0x00000010,
/// <summary>Use a 24-bit DIB section.</summary>
ILC_COLOR24=0x00000018,
/// <summary>Use a 32-bit DIB section.</summary>
ILC_COLOR32=0x00000020,
/// <summary>Not implemented.</summary>
ILC_PALETTE=0x00000800,
/// <summary>Mirror the icons contained, if the process is mirrored</summary>
ILC_MIRROR=0x00002000,
/// <summary>Causes the mirroring code to mirror each item when inserting a set of images, versus the whole strip.</summary>
ILC_PERITEMMIRROR=0x00008000,
/// <summary>Windows Vista and later. Imagelist should accept smaller than set images and apply original size based on image added.</summary>
ILC_ORIGINALSIZE=0x00010000,
/// <summary>Windows Vista and later. Reserved.</summary>
ILC_HIGHQUALITYSCALE=0x00020000,
}
/// <summary>Discard images flags.</summary>
[Flags]
publicenumILDI:uint
{
/// <summary>Discard and purge.</summary>
ILDI_PURGE=0x00000001,
/// <summary>Discard to standby list.</summary>
ILDI_STANDBY=0x00000002,
/// <summary>Reset the "has been accessed" flag.</summary>
ILDI_RESETACCESS=0x00000004,
/// <summary>Ask whether access flag is set (but do not reset).</summary>
ILDI_QUERYACCESS=0x00000008,
}
/// <summary>Force image flags.</summary>
publicenumILFIP
{
/// <summary>Always get the image (can be slow).</summary>
ILFIP_ALWAYS=0x00000000,
/// <summary>Only get if on standby.</summary>
ILFIP_FROMSTANDBY=0x00000001,
}
/// <summary>Flags for getting original size.</summary>
publicenumILGOS
{
/// <summary>Always get the original size (can be slow).</summary>
ILGOS_ALWAYS=0x00000000,
/// <summary>Only get if present or on standby.</summary>
ILGOS_FROMSTANDBY=0x00000001,
}
/// <summary>A flag that specifies how the stream is read.</summary>
publicenumILP
{
/// <summary>Expects an image list that was written with the ILP_NORMAL flag specified.</summary>
ILP_NORMAL,
/// <summary>Expects an image list that was written with the ILP_DOWNLEVEL flag specified.</summary>
ILP_DOWNLEVEL
}
/// <summary>Specifies how the mask is applied to the image as one or a bitwise combination of the following decoration flags.</summary>
[Flags]
publicenumILR
{
/// <summary>Not used.</summary>
ILR_DEFAULT=0x0000,
/// <summary>Horizontally align to left.</summary>
ILR_HORIZONTAL_LEFT=0x0000,
/// <summary>Horizontally center.</summary>
ILR_HORIZONTAL_CENTER=0x0001,
/// <summary>Horizontally align to right.</summary>
ILR_HORIZONTAL_RIGHT=0x0002,
/// <summary>Vertically align to top.</summary>
ILR_VERTICAL_TOP=0x0000,
/// <summary>Vertically align to center.</summary>
ILR_VERTICAL_CENTER=0x0010,
/// <summary>Vertically align to bottom.</summary>
/// Draws the image using the background color for the image list. If the background color is the CLR_NONE value, the image is drawn transparently
/// using the mask.
/// </summary>
ILD_NORMAL=0X00000000,
/// <summary>
/// Draws the image transparently using the mask, regardless of the background color. This value has no effect if the image list does not contain a mask.
/// </summary>
ILD_TRANSPARENT=0x00000001,
/// <summary>
/// Draws the image, blending 25 percent with the blend color specified by rgbFg. This value has no effect if the image list does not contain a mask.
/// </summary>
ILD_BLEND25=0X00000002,
/// <summary>Same as ILD_BLEND25</summary>
ILD_FOCUS=ILD_BLEND25,
/// <summary>
/// Draws the image, blending 50 percent with the blend color specified by rgbFg. This value has no effect if the image list does not contain a mask.
/// </summary>
ILD_BLEND50=0X00000004,
/// <summary>Same as ILD_BLEND50</summary>
ILD_SELECTED=ILD_BLEND50,
/// <summary>Same as ILD_BLEND50</summary>
ILD_BLEND=ILD_BLEND50,
/// <summary>Draws the mask.</summary>
ILD_MASK=0X00000010,
/// <summary>If the overlay does not require a mask to be drawn, set this flag.</summary>
ILD_IMAGE=0X00000020,
/// <summary>Draws the image using the raster operation code specified by the dwRop member.</summary>
ILD_ROP=0X00000040,
/// <summary>To extract the overlay image from the fStyle member, use the logical AND to combine fStyle with the ILD_OVERLAYMASK value.</summary>
ILD_OVERLAYMASK=0x00000F00,
/// <summary>Preserves the alpha channel in the destination.</summary>
ILD_PRESERVEALPHA=0x00001000,
/// <summary>Causes the image to be scaled to cx, cy instead of being clipped.</summary>
ILD_SCALE=0X00002000,
/// <summary>Scales the image to the current dpi of the display.</summary>
ILD_DPISCALE=0X00004000,
/// <summary>
/// <c>Windows Vista and later.</c> Draw the image if it is available in the cache. Do not extract it automatically. The called draw method returns
/// E_PENDING to the calling component, which should then take an alternative action, such as, provide another image and queue a background task to
/// force the image to be loaded via ForceImagePresent using the ILFIP_ALWAYS flag. The ILD_ASYNC flag then prevents the extraction operation from
/// blocking the current thread and is especially important if a draw method is called from the user interface (UI) thread.
/// Windows Vista and later. Indicates that the item in the imagelist was generated via a StretchBlt function, consequently image quality may have degraded.
/// <summary>Adds an image or images to an image list.</summary>
/// <param name="hbmImage">A handle to the bitmap that contains the image or images. The number of images is inferred from the width of the bitmap.</param>
/// <param name="hbmMask">A handle to the bitmap that contains the mask. If no mask is used with the image list, this parameter is ignored.</param>
/// <summary>Adds an image or images to an image list, generating a mask from the specified bitmap.</summary>
/// <param name="hbmImage">A handle to the bitmap that contains one or more images. The number of images is inferred from the width of the bitmap.</param>
/// <summary>Removes an image from an image list.</summary>
/// <param name="i">A value of type int that contains the index of the image to remove. If this parameter is -1, the method removes all images.</param>
/// <param name="iTrack">A value of type int that contains the index of the image to drag.</param>
/// <param name="dxHotspot">A value of type int that contains the x-component of the drag position relative to the upper-left corner of the image.</param>
/// <param name="dyHotspot">A value of type int that contains the y-component of the drag position relative to the upper-left corner of the image.</param>
/// <summary>Locks updates to the specified window during a drag operation and displays the drag image at the specified position within the window.</summary>
/// <param name="hwndLock">A handle to the window that owns the drag image.</param>
/// <summary>Creates a new drag image by combining the specified image, which is typically a mouse cursor image, with the current drag image.</summary>
/// <param name="ppt">A pointer to a POINT structure that receives the current drag position. Can be NULL.</param>
/// <param name="pptHotspot">A pointer to a POINT structure that receives the offset of the drag image relative to the drag position. Can be NULL.</param>
/// <param name="riid">An IID for the image list.</param>
/// <returns>The address of a pointer to the interface for the image list if successful, NULL otherwise.</returns>
/// <summary>Adds an image or images to an image list.</summary>
/// <param name="hbmImage">A handle to the bitmap that contains the image or images. The number of images is inferred from the width of the bitmap.</param>
/// <param name="hbmMask">A handle to the bitmap that contains the mask. If no mask is used with the image list, this parameter is ignored.</param>
/// <returns>
/// When this method returns, contains a pointer to the index of the first new image. If the method fails to successfully add the new image, this
/// <summary>Adds an image or images to an image list, generating a mask from the specified bitmap.</summary>
/// <param name="hbmImage">A handle to the bitmap that contains one or more images. The number of images is inferred from the width of the bitmap.</param>
/// <param name="crMask">
/// The color used to generate the mask. Each pixel of this color in the specified bitmap is changed to black, and the corresponding bit in the mask
/// is set to 1.
/// </param>
/// <returns>A pointer to an int that contains the index of the first new image when it returns, if successful, or -1 otherwise.</returns>
/// <summary>Draws an image list item in the specified device context.</summary>
/// <param name="pimldp">A pointer to an IMAGELISTDRAWPARAMS structure that contains the drawing parameters.</param>
newvoidDraw(IMAGELISTDRAWPARAMSpimldp);
/// <summary>Removes an image from an image list.</summary>
/// <param name="i">A value of type int that contains the index of the image to remove. If this parameter is -1, the method removes all images.</param>
newvoidRemove(inti);
/// <summary>Creates an icon from an image and a mask in an image list.</summary>
/// <param name="i">A value of type int that contains the index of the image.</param>
/// <param name="flags">A combination of flags that specify the drawing style. For a list of values, see IImageList::Draw.</param>
/// <returns>A pointer to an int that contains the handle to the icon if successful, or NULL if otherwise.</returns>
newIntPtrGetIcon(inti,IMAGELISTDRAWFLAGSflags);
/// <summary>Gets information about an image.</summary>
/// <param name="i">A value of type int that contains the index of the image.</param>
/// <returns>
/// A pointer to an IMAGEINFO structure that receives information about the image. The information in this structure can directly manipulate the
/// bitmaps of the image.
/// </returns>
newIMAGEINFOGetImageInfo(inti);
/// <summary>Copies images from a given image list.</summary>
/// <param name="iDst">A value of type int that contains the zero-based index of the destination image for the copy operation.</param>
/// <param name="punkSrc">A pointer to the IUnknown interface for the source image list.</param>
/// <param name="iSrc">A value of type int that contains the zero-based index of the source image for the copy operation.</param>
/// <param name="uFlags">A value that specifies the type of copy operation to be made.</param>
/// <param name="iTrack">A value of type int that contains the index of the image to drag.</param>
/// <param name="dxHotspot">A value of type int that contains the x-component of the drag position relative to the upper-left corner of the image.</param>
/// <param name="dyHotspot">A value of type int that contains the y-component of the drag position relative to the upper-left corner of the image.</param>
/// <summary>Locks updates to the specified window during a drag operation and displays the drag image at the specified position within the window.</summary>
/// <param name="hwndLock">A handle to the window that owns the drag image.</param>
/// <param name="x">
/// The x-coordinate at which to display the drag image. The coordinate is relative to the upper-left corner of the window, not the client area.
/// </param>
/// <param name="y">
/// The y-coordinate at which to display the drag image. The coordinate is relative to the upper-left corner of the window, not the client area.
/// </param>
newvoidDragEnter(HandleRefhwndLock,intx,inty);
/// <summary>Unlocks the specified window and hides the drag image, which enables the window to update.</summary>
/// <param name="hwndLock">A handle to the window that contains the drag image.</param>
newvoidDragLeave(HandleRefhwndLock);
/// <summary>
/// Moves the image that is being dragged during a drag-and-drop operation. This function is typically called in response to a WM_MOUSEMOVE message.
/// </summary>
/// <param name="x">
/// A value of type int that contains the x-coordinate where the drag image appears. The coordinate is relative to the upper-left corner of the
/// window, not the client area.
/// </param>
/// <param name="y">
/// A value of type int that contains the y-coordinate where the drag image appears. The coordinate is relative to the upper-left corner of the
/// window, not the client area.
/// </param>
newvoidDragMove(intx,inty);
/// <summary>Creates a new drag image by combining the specified image, which is typically a mouse cursor image, with the current drag image.</summary>
/// <param name="punk">
/// A pointer to the IUnknown interface that accesses the image list interface, which contains the new image to combine with the drag image.
/// </param>
/// <param name="iDrag">A value of type int that contains the index of the new image to combine with the drag image.</param>
/// <param name="dxHotspot">A value of type int that contains the x-component of the hot spot within the new image.</param>
/// <param name="dyHotspot">A value of type int that contains the x-component of the hot spot within the new image.</param>
/// Gets the temporary image list that is used for the drag image. The function also retrieves the current drag position and the offset of the drag
/// image relative to the drag position.
/// </summary>
/// <param name="ppt">A pointer to a POINT structure that receives the current drag position. Can be NULL.</param>
/// <param name="pptHotspot">A pointer to a POINT structure that receives the offset of the drag image relative to the drag position. Can be NULL.</param>
/// <param name="riid">An IID for the image list.</param>
/// <returns>The address of a pointer to the interface for the image list if successful, NULL otherwise.</returns>
/// <summary>Gets the flags of an image.</summary>
/// <param name="i">A value of type int that contains the index of the images whose flags need to be retrieved.</param>
/// <returns>A pointer to a DWORD that contains the flags when the method returns.</returns>
newIMAGELISTITEMFLAGGetItemFlags(inti);
/// <summary>Retrieves a specified image from the list of images used as overlay masks.</summary>
/// <param name="iOverlay">A value of type int that contains the one-based index of the overlay mask.</param>
/// <returns>
/// A pointer to an int that receives the zero-based index of an image in the image list. This index identifies the image that is used as an overlay mask.
/// </returns>
newintGetOverlayImage(intiOverlay);
/// <summary>Resizes the current image.</summary>
/// <param name="cxNewIconSize">The x-axis count, in pixels, for the new size.</param>
/// <param name="cyNewIconSize">The y-axis count, in pixels, for the new size.</param>
voidResize(intcxNewIconSize,intcyNewIconSize);
/// <summary>Gets the original size of a specified image.</summary>
/// <param name="iImage">The index of desired image.</param>
/// <param name="dwFlags">Flags for getting original size.</param>
/// <param name="pcx">A pointer to the x-axis count.</param>
/// <param name="pcy">A pointer to the y-axis count.</param>
/// <summary>Discards images from list, as specified.</summary>
/// <param name="iFirstImage">An index of first image to discard.</param>
/// <param name="iLastImage">An index of last image to discard.</param>
/// <param name="dwFlags">Discard images flags. ILDI_STANDBY and ILDI_PURGE are mutually exclusive. ILDI_RESETACCESS can be combined with either.</param>
/// <summary>Get an image list interface from an image list handle.</summary>
/// <param name="himl">
/// <para>Type: <c>HIMAGELIST</c></para>
/// <para>A handle to the image list to query.</para>
/// </param>
/// <param name="riid">
/// <para>Type: <c>REFIID</c></para>
/// <para>Reference to the desired interface ID.</para>
/// </param>
/// <param name="ppv">
/// <para>Type: <c>void**</c></para>
/// <para>
/// When this method returns, contains the interface pointer requested in riid. This is normally <c>IImageList2</c>, which provides the <c>Initialize</c> method.
/// </para>
/// </param>
/// <returns>
/// <para>Type: <c><c>HRESULT</c></c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// <summary>Get an image list interface from an image list handle.</summary>
/// <param name="himl">
/// <para>Type: <c>HIMAGELIST</c></para>
/// <para>A handle to the image list to query.</para>
/// </param>
/// <returns>
/// When this method returns, contains the interface pointer requested. This is normally <c>IImageList2</c>, which provides the <c>Initialize</c> method.
/// A pointer to the outer <c>IUnknown</c> interface that aggregates the object created by this function, or <c>NULL</c> if no aggregation is desired.
/// </para>
/// </param>
/// <param name="riid">
/// <para>Type: <c>REFIID</c></para>
/// <para>Reference to the desired interface ID.</para>
/// </param>
/// <param name="ppv">
/// <para>Type: <c>void**</c></para>
/// <para>
/// When this method returns, contains the interface pointer requested in riid. This is normally <c>IImageList2</c>, which provides the <c>Initialize</c> method.
/// </para>
/// </param>
/// <returns>
/// <para>Type: <c><c>HRESULT</c></c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// <para>The width, in pixels, of each image.</para>
/// </param>
/// <param name="cy">
/// <para>Type: <c>int</c></para>
/// <para>The height, in pixels, of each image.</para>
/// </param>
/// <param name="flags">
/// <para>Type: <c><c>UINT</c></c></para>
/// <para>A set of bit flags that specify the type of image list to create. This parameter can be a combination of the <c>Image List Creation Flags</c>.</para>
/// </param>
/// <param name="cInitial">
/// <para>Type: <c>int</c></para>
/// <para>The number of images that the image list initially contains.</para>
/// </param>
/// <param name="cGrow">
/// <para>Type: <c>int</c></para>
/// <para>
/// The number of images by which the image list can grow when the system needs to make room for new images. This parameter represents the number of new
/// images that the resized image list can contain.
/// </para>
/// </param>
/// <returns>
/// <para>Type: <c>HIMAGELIST</c></para>
/// <para>Returns the handle to the image list if successful, or <c>NULL</c> otherwise.</para>
/// <summary>Creates a duplicate of an existing image list.</summary><param name="himl"><para>Type: <c>HIMAGELIST</c></para><para>A handle to the image list to be duplicated. All information contained in the original image list for normal images is copied to the new image list. Overlay images are not copied.</para></param><returns><para>Type: <c>HIMAGELIST</c></para><para>Returns the handle to the new duplicate image list if successful, or <c>NULL</c> otherwise.</para></returns>
/// <summary>Creates an icon from an image and mask in an image list.</summary>
/// <param name="himl">
/// <para>Type: <c>HIMAGELIST</c></para>
/// <para>A handle to the image list.</para>
/// </param>
/// <param name="i">
/// <para>Type: <c>int</c></para>
/// <para>An index of the image.</para>
/// </param>
/// <param name="flags">
/// <para>Type: <c><c>UINT</c></c></para>
/// <para>
/// A combination of flags that specify the drawing style. For a list of values, see the description of the fStyle parameter of the <c>ImageList_Draw</c> function.
/// </para>
/// </param>
/// <returns>
/// <para>Type: <c><c>HICON</c></c></para>
/// <para>Returns the handle to the icon if successful, or <c>NULL</c> otherwise.</para>
/// </returns>
// HICON ImageList_GetIcon( HIMAGELIST himl, int i, UINT flags);
/// <summary>Creates an image list from the specified bitmap.</summary><param name="hi"><para>Type: <c><c>HINSTANCE</c></c></para><para>A handle to the instance that contains the resource. This parameter can be <c>NULL</c> if you are loading an image from a file or loading an OEM resource.</para></param><param name="lpbmp"><para>Type: <c><c>LPCTSTR</c></c></para><para>The image to load.</para><para>If the uFlags parameter includes LR_LOADFROMFILE, lpbmp is the address of a null-terminated string that names the file containing the image to load.</para><para>If the hi parameter is non-<c>NULL</c> and LR_LOADFROMFILE is not specified, lpbmp is the address of a null-terminated string that contains the name of the image resource in the hi module.</para><para>If hi is <c>NULL</c> and LR_LOADFROMFILE is not specified, the <c>LOWORD</c> of this parameter must be the identifier of an OEM image to load. To create this value, use the <c>MAKEINTRESOURCE</c> macro with one of the OEM image identifiers defined in Winuser.h. These identifiers have the following prefixes.</para><para><list type="table"><listheader><term>Value</term><term>Meaning</term></listheader><item><term>OBM_ for OEM bitmaps</term><term /></item><item><term>OIC_ for OEM icons</term><term /></item><item><term>OCR_ for OEM cursors</term><term /></item></list></para></param><param name="cx"><para>Type: <c>int</c></para><para>The width of each image. The height of each image and the initial number of images are inferred by the dimensions of the specified resource.</para></param><param name="cGrow"><para>Type: <c>int</c></para><para>The number of images by which the image list can grow when the system needs to make room for new images. This parameter represents the number of new images that the resized image list can contain.</para></param><param name="crMask"><para>Type: <c><c>COLORREF</c></c></para><para>The color used to generate a mask. Each pixel of this color in the specified bitmap, cursor, or icon is changed to black, and the corresponding bit in the mask is set to 1. If this parameter is the CLR_NONE value, no mask is generated. If this parameter is the CLR_DEFAULT value, the color of the pixel at the upper-left corner of the image is treated as the mask color.</para></param><param name="uType"><para>Type: <c><c>UINT</c></c></para><para>A flag that specifies the type of image to load. This parameter must be IMAGE_BITMAP to indicate that a bitmap is being loaded.</para><para><list type="table"><listheader><term>Value</term><term>Meaning</term></listheader><item><term>IMAGE_BITMAP</term><term>Loads a bitmap.</term></item></list></para></param><param name="uFlags"><para>Type: <c><c>UINT</c></c></para><para>Flags that specify how to load the image. This parameter can be a combination of the following values.</para><para><list type="table"><listheader><term>Value</term><term>Meaning</term></listheader><item><term>LR_CREATEDIBSECTION</term><term>Causes the function to return a DIB section bitmap rather than a compatible bitmap when the uType parameter specifies IMAGE_BITMAP. LR_CREATEDIBSECTION is useful for loading a bitmap without mapping it to the colors of the display device.</term></item><item><term>LR_DEFAULTCOLOR</term><term>Uses the color format of the display.</term></item><item><term>LR_DEFAULTSIZE</term><term>Uses the width or height specified by the system metric values for cursors and icons if the cx parameter is set to zero. If this value is not specified and cx is set to zero, the function sets the size to the one specified in the resource. If the resource contains multiple images, the function sets the size to that of the first image. </term></item><item><term>LR_LOADFROMFILE</term><term>Loads the image from the file specified by the lpbmp parameter.</term></item><item><term>LR_LOADMAP3DCOLORS</term><term>Searches the color table for the image and replaces the following shades of gray with the corresponding three-dimensional color: Dk Gray: RGB(128, 128, 128)COLOR_3DSHADOW Gray: RGB(192, 192, 192)COLOR_3DFACE Lt Gray: RGB(223, 223, 223)COLOR_3DLIGH
// HIMAGELIST ImageList_LoadImage( HINSTANCE hi, LPCTSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
/// <summary>Reads an image list from a stream.</summary><param name="pstm"><para>Type: <c>LPSTREAM</c></para><para>A pointer to the stream.</para></param><returns><para>Type: <c>HIMAGELIST</c></para><para>Returns the handle to the image list if successful, or <c>NULL</c> otherwise.</para></returns>
/// <summary>Writes an image list to a stream.</summary>
/// <param name="himl">
/// <para>Type: <c>HIMAGELIST</c></para>
/// <para>A handle to the image list.</para>
/// </param>
/// <param name="dwFlags">
/// <para>Type: <c><c>DWORD</c></c></para>
/// <para>A flag that specifies how the stream is written.</para>
/// <para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>ILP_NORMAL</term>
/// <term>Writes to the stream using the file format for Common Controls 6.0, which includes information about image list attributes new to this version.</term>
/// </item>
/// <item>
/// <term>ILP_DOWNLEVEL</term>
/// <term>
/// Writes to the stream using a file format previous to version 6.0. Specify this flag if you need to save image lists loaded under Common Controls
/// versions earlier than version 6.0.
/// </term>
/// </item>
/// </list>
/// </para>
/// </param>
/// <param name="pstm">
/// <para>Type: <c>LPSTREAM</c></para>
/// <para>The address of the stream.</para>
/// </param>
/// <returns>
/// <para>Type: <c><c>HRESULT</c></c></para>
/// <para>If this function succeeds, it returns <c>S_OK</c>. Otherwise, it returns an <c>HRESULT</c> error code.</para>
/// <summary>The size of this structure, in bytes.</summary>
publicintcbSize;
/// <summary>A handle to the image list that contains the image to be drawn.</summary>
publicIntPtrhiml;
/// <summary>The zero-based index of the image to be drawn.</summary>
publicinti;
/// <summary>A handle to the destination device context.</summary>
publicIntPtrhdcDst;
/// <summary>The x-coordinate that specifies where the image is drawn.</summary>
publicintx;
/// <summary>The y-coordinate that specifies where the image is drawn.</summary>
publicinty;
/// <summary>
/// A value that specifies the number of pixels to draw, relative to the upper-left corner of the drawing operation as specified by xBitmap and
/// yBitmap. If cx and cy are zero, then Draw draws the entire valid section. The method does not ensure that the parameters are valid.
/// </summary>
publicintcx;
/// <summary>
/// A value that specifies the number of pixels to draw, relative to the upper-left corner of the drawing operation as specified by xBitmap and
/// yBitmap. If cx and cy are zero, then Draw draws the entire valid section. The method does not ensure that the parameters are valid.
/// </summary>
publicintcy;
/// <summary>
/// The x-coordinate that specifies the upper-left corner of the drawing operation in reference to the image itself. Pixels of the image that are to
/// the left of xBitmap and above yBitmap do not appear.
/// </summary>
publicintxBitmap;
/// <summary>
/// The y-coordinate that specifies the upper-left corner of the drawing operation in reference to the image itself. Pixels of the image that are to
/// the left of xBitmap and above yBitmap do not appear.
/// </summary>
publicintyBitmap;
/// <summary>The image background color. This parameter can be an application-defined RGB value or <see cref="CLR_DEFAULT"/> or <see cref="CLR_NONE"/>.</summary>