|
// ------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------
#pragma warning disable CS1591,CS1573,CS0465,CS0649,CS8019,CS1570,CS1584,CS1658,CS0436,CS8981
using global::System;
using global::System.Diagnostics;
using global::System.Diagnostics.CodeAnalysis;
using global::System.Runtime.CompilerServices;
using global::System.Runtime.InteropServices;
using global::System.Runtime.Versioning;
using winmdroot = global::Windows.Win32;
namespace Windows.Win32
{
internal static partial class PInvoke
{
internal const uint ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 1U;
internal const uint ACTCTX_FLAG_LANGID_VALID = 2U;
internal const uint ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 4U;
internal const uint ACTCTX_FLAG_RESOURCE_NAME_VALID = 8U;
internal const uint ACTCTX_FLAG_SET_PROCESS_DEFAULT = 16U;
internal const uint ACTCTX_FLAG_APPLICATION_NAME_VALID = 32U;
internal const uint ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF = 64U;
internal const uint ACTCTX_FLAG_HMODULE_VALID = 128U;
internal const int ARW_STARTMASK = 3;
internal const int ARW_STARTRIGHT = 1;
internal const int ARW_STARTTOP = 2;
internal const int ARW_LEFT = 0;
internal const int ARW_RIGHT = 0;
internal const int ARW_UP = 4;
internal const int ARW_DOWN = 4;
internal const int ARW_HIDE = 8;
internal const uint BFFM_INITIALIZED = 1U;
internal const uint BFFM_SELCHANGED = 2U;
internal const uint BFFM_VALIDATEFAILEDA = 3U;
internal const uint BFFM_VALIDATEFAILEDW = 4U;
internal const uint BFFM_IUNKNOWN = 5U;
internal const uint BFFM_SETSTATUSTEXTA = 1124U;
internal const uint BFFM_ENABLEOK = 1125U;
internal const uint BFFM_SETSELECTIONA = 1126U;
internal const uint BFFM_SETSELECTIONW = 1127U;
internal const uint BFFM_SETSTATUSTEXTW = 1128U;
internal const uint BFFM_SETOKTEXT = 1129U;
internal const uint BFFM_SETEXPANDED = 1130U;
internal const uint BFFM_SETSTATUSTEXT = 1128U;
internal const uint BFFM_SETSELECTION = 1127U;
internal const uint BFFM_VALIDATEFAILED = 4U;
internal const uint BIF_SHOWSIMILARDRIVERS = 1U;
internal const uint BIF_RAWDEVICENEEDSDRIVER = 2U;
internal const uint BIF_RETURNONLYFSDIRS = 1U;
internal const uint BIF_DONTGOBELOWDOMAIN = 2U;
internal const uint BIF_STATUSTEXT = 4U;
internal const uint BIF_RETURNFSANCESTORS = 8U;
internal const uint BIF_EDITBOX = 16U;
internal const uint BIF_VALIDATE = 32U;
internal const uint BIF_NEWDIALOGSTYLE = 64U;
internal const uint BIF_BROWSEINCLUDEURLS = 128U;
internal const uint BIF_UAHINT = 256U;
internal const uint BIF_NONEWFOLDERBUTTON = 512U;
internal const uint BIF_NOTRANSLATETARGETS = 1024U;
internal const uint BIF_BROWSEFORCOMPUTER = 4096U;
internal const uint BIF_BROWSEFORPRINTER = 8192U;
internal const uint BIF_BROWSEINCLUDEFILES = 16384U;
internal const uint BIF_SHAREABLE = 32768U;
internal const uint BIF_BROWSEFILEJUNCTIONS = 65536U;
/// <summary>Gets the check state of a radio button or check box. You can send this message explicitly or use the Button\_GetCheck macro.</summary>
/// <returns>
/// <para>The return value from a button created with the [**BS\_AUTOCHECKBOX**](button-styles.md), [**BS\_AUTORADIOBUTTON**](button-styles.md), [**BS\_AUTO3STATE**](button-styles.md), [**BS\_CHECKBOX**](button-styles.md), [**BS\_RADIOBUTTON**](button-styles.md), or [**BS\_3STATE**](button-styles.md) style can be one of the following.</para>
/// <para>| Return code | Description | |---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | <dl> <dt>**BST\_CHECKED**</dt> </dl> | Button is checked.<br/> | | <dl> <dt>**BST\_INDETERMINATE**</dt> </dl> | Button is grayed, indicating an indeterminate state (applies only if the button has the [**BS\_3STATE**](button-styles.md) or [**BS\_AUTO3STATE**](button-styles.md) style).<br/> | | <dl> <dt>**BST\_UNCHECKED**</dt> </dl> | Button is cleared<br/> |</para>
/// </returns>
/// <remarks>If the button has a style other than those listed, the return value is zero.</remarks>
internal const uint BM_GETCHECK = 240U;
/// <summary>Sets the check state of a radio button or check box. You can send this message explicitly or by using the Button\_SetCheck macro.</summary>
/// <returns>This message always returns zero.</returns>
/// <remarks>The **BM\_SETCHECK** message has no effect on push buttons.</remarks>
internal const uint BM_SETCHECK = 241U;
/// <summary>Retrieves the state of a button or check box. You can send this message explicitly or use the Button\_GetState macro.</summary>
/// <returns>
/// <para>The return value specifies the current state of the button. It is a combination of the following values.</para>
/// <para>| Return code | Description | |----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | <dl> <dt>**BST\_CHECKED**</dt> </dl> | The button is checked.<br/> | | <dl> <dt>**BST\_DROPDOWNPUSHED**</dt> </dl> | [Windows Vista](common-control-versions.md). The button is in the drop-down state. Applies only if the button has the [**TBSTYLE\_DROPDOWN**](toolbar-control-and-button-styles.md) style.<br/> | | <dl> <dt>**BST\_FOCUS**</dt> </dl> | The button has the keyboard focus.<br/> | | <dl> <dt>**BST\_HOT**</dt> </dl> | The button is hot; that is, the mouse is hovering over it.<br/> | | <dl> <dt>**BST\_INDETERMINATE**</dt> </dl> | The state of the button is indeterminate. Applies only if the button has the [**BS\_3STATE**](button-styles.md) or [**BS\_AUTO3STATE**](button-styles.md) style.<br/> | | <dl> <dt>**BST\_PUSHED**</dt> </dl> | The button is being shown in the pushed state.<br/> | | <dl> <dt>**BST\_UNCHECKED**</dt> </dl> | No special state. Equivalent to zero.<br/> |</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bm-getstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BM_GETSTATE = 242U;
/// <summary>Sets the highlight state of a button. The highlight state indicates whether the button is highlighted as if the user had pushed it. You can send this message explicitly or use the Button\_SetState macro.</summary>
/// <returns>This message always returns zero.</returns>
/// <remarks>
/// <para>Highlighting affects only the appearance of a button. It has no effect on the check state of a radio button or check box. A button is automatically highlighted when the user positions the cursor over it and presses and holds the left mouse button. The highlighting is removed when the user releases the mouse button.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bm-setstate#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BM_SETSTATE = 243U;
/// <summary>Sets the style of a button. You can send this message explicitly or use the Button\_SetStyle macro.</summary>
/// <returns>This message always returns zero.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bm-setstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BM_SETSTYLE = 244U;
/// <summary>Simulates the user clicking a button. This message causes the button to receive the WM\_LBUTTONDOWN and WM\_LBUTTONUP messages, and the button's parent window to receive a BN\_CLICKED notification code.</summary>
/// <returns>This message does not return a value.</returns>
/// <remarks>If the button is in a dialog box and the dialog box is not active, the **BM\_CLICK** message might fail. To ensure success in this situation, call the [**SetActiveWindow**](/windows/desktop/api/winuser/nf-winuser-setactivewindow) function to activate the dialog box before sending the **BM\_CLICK** message to the button.</remarks>
internal const uint BM_CLICK = 245U;
/// <summary>Retrieves a handle to the image (icon or bitmap) associated with the button.</summary>
/// <returns>The return value is a handle to the image, if any; otherwise, it is **NULL**.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bm-getimage">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BM_GETIMAGE = 246U;
/// <summary>Associates a new image (icon or bitmap) with the button.</summary>
/// <returns>The return value is a handle to the image previously associated with the button, if any; otherwise, it is **NULL**.</returns>
/// <remarks>
/// <para>The appearance of text, an icon, or both on a button control depends on the [**BS\_ICON**](button-styles.md) and [**BS\_BITMAP**](button-styles.md) styles, and whether the **BM\_SETIMAGE** message is called. The possible results are as follows:</para>
/// <para>| BS\_ICON or BS\_BITMAP Set? | BM\_SETIMAGE Called? | Result | |-----------------------------|----------------------|---------------------| | Yes | Yes | Show icon only. | | No | Yes | Show icon and text. | | Yes | No | Show text only. | | No | No | Show text only |</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bm-setimage#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BM_SETIMAGE = 247U;
/// <summary>Sets a flag on a radio button that controls the generation of BN\_CLICKED messages when the button receives focus.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bm-setdontclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BM_SETDONTCLICK = 248U;
/// <summary>Sent when the user clicks a button. The parent window of the button receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>A disabled button does not send a BN\_CLICKED notification code to its parent window.</remarks>
internal const uint BN_CLICKED = 0U;
/// <summary>Sent when a button should be painted.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bn-paint">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BN_PAINT = 1U;
/// <summary>Sent when the user selects a button.</summary>
/// <remarks>BN\_HILITE is the same as the [BN\_PUSHED](bn-pushed.md) notification code.</remarks>
internal const uint BN_HILITE = 2U;
/// <summary>Sent when the highlight should be removed from a button.</summary>
/// <remarks>BN\_UNHILITE is the same as the [BN\_UNPUSHED](bn-unpushed.md) notification code.</remarks>
internal const uint BN_UNHILITE = 3U;
/// <summary>Sent when a button is disabled.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bn-disable">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BN_DISABLE = 4U;
/// <summary>BN_DOUBLECLICKED notification code - Sent when the user double-clicks a button.</summary>
/// <remarks>BN\_DOUBLECLICKED is the same as the [BN\_DBLCLK](bn-dblclk.md) notification code.</remarks>
internal const uint BN_DOUBLECLICKED = 5U;
/// <summary>Sent when the push state of a button is set to pushed.</summary>
/// <remarks>BN\_PUSHED is the same as the [BN\_HILITE](bn-hilite.md) notification code.</remarks>
internal const uint BN_PUSHED = 2U;
/// <summary>Sent when the push state of a button is set to unpushed.</summary>
/// <remarks>BN\_UNPUSHED is the same as the [BN\_UNHILITE](bn-unhilite.md) notification code.</remarks>
internal const uint BN_UNPUSHED = 3U;
/// <summary>BN_DBLCLK notification code - Sent when the user double-clicks a button.</summary>
/// <remarks>BN\_DBLCLK is the same as the [BN\_DOUBLECLICKED](bn-doubleclicked.md) notification code.</remarks>
internal const uint BN_DBLCLK = 5U;
/// <summary>Sent when a button receives the keyboard focus. The button must have the BS\_NOTIFY style to send this notification code. The parent window of the button receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bn-setfocus">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BN_SETFOCUS = 6U;
/// <summary>Sent when a button loses the keyboard focus. The button must have the BS\_NOTIFY style to send this notification code. The parent window of the button receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/bn-killfocus">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint BN_KILLFOCUS = 7U;
internal const int BS_SPLITBUTTON = 12;
internal const int BS_DEFSPLITBUTTON = 13;
internal const int BS_COMMANDLINK = 14;
internal const int BS_DEFCOMMANDLINK = 15;
internal const int BS_PUSHBUTTON = 0;
internal const int BS_DEFPUSHBUTTON = 1;
internal const int BS_CHECKBOX = 2;
internal const int BS_AUTOCHECKBOX = 3;
internal const int BS_RADIOBUTTON = 4;
internal const int BS_3STATE = 5;
internal const int BS_AUTO3STATE = 6;
internal const int BS_GROUPBOX = 7;
internal const int BS_USERBUTTON = 8;
internal const int BS_AUTORADIOBUTTON = 9;
internal const int BS_PUSHBOX = 10;
internal const int BS_OWNERDRAW = 11;
internal const int BS_TYPEMASK = 15;
internal const int BS_LEFTTEXT = 32;
internal const int BS_TEXT = 0;
internal const int BS_ICON = 64;
internal const int BS_BITMAP = 128;
internal const int BS_LEFT = 256;
internal const int BS_RIGHT = 512;
internal const int BS_CENTER = 768;
internal const int BS_TOP = 1024;
internal const int BS_BOTTOM = 2048;
internal const int BS_VCENTER = 3072;
internal const int BS_PUSHLIKE = 4096;
internal const int BS_MULTILINE = 8192;
internal const int BS_NOTIFY = 16384;
internal const int BS_FLAT = 32768;
internal const int BS_RIGHTBUTTON = 32;
internal const int CB_MAX_DISK = 2147483647;
internal const uint CB_MAX_FILENAME = 256U;
internal const uint CB_MAX_CABINET_NAME = 256U;
internal const uint CB_MAX_CAB_PATH = 256U;
internal const uint CB_MAX_DISK_NAME = 256U;
/// <summary>An application sends a CB\_SETMINVISIBLE message to set the minimum number of visible items in the drop-down list of a combo box.</summary>
/// <returns>If the message is successful, the return value is **TRUE**. Otherwise the return value is **FALSE**.</returns>
/// <remarks>
/// <para>When the number of items in the drop-down list is greater than the minimum, the combo box uses a scroll bar. By default, 30 is the minimum number of visible items. This message is ignored if the combo box control has style [**CBS\_NOINTEGRALHEIGHT**](combo-box-styles.md). To use **CB\_SETMINVISIBLE**, the application must specify comctl32.dll version 6 in the manifest. For more information, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-setminvisible#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_SETMINVISIBLE = 5889U;
/// <summary>Gets the minimum number of visible items in the drop-down list of a combo box.</summary>
/// <returns>The return value is the minimum number of visible items.</returns>
/// <remarks>
/// <para>When the number of items in the drop-down list is greater than the minimum, the combo box uses a scroll bar. This message is ignored if the combo box control has style [**CBS\_NOINTEGRALHEIGHT**](combo-box-styles.md). To use **CB\_GETMINVISIBLE**, the application must specify comctl32.dll version 6 in the manifest. For more information, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getminvisible#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETMINVISIBLE = 5890U;
/// <summary>Sets the cue banner text that is displayed for the edit control of a combo box.</summary>
/// <returns>Returns 1 if successful, or an error value otherwise.</returns>
/// <remarks>The cue banner is text that is displayed in the edit control of a combo box when there is no selection.</remarks>
internal const uint CB_SETCUEBANNER = 5891U;
/// <summary>Gets the cue banner text displayed in the edit control of a combo box. Send this message explicitly or by using the ComboBox\_GetCueBannerText macro.</summary>
/// <returns>
/// <para>Returns 1 if successful, or an error value otherwise. If there is no cue banner text to get, the return value is 0. If the calling application fails to allocate a buffer, or set *lParam* before sending this message, undefined behavior may result and the return value may not be reliable.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getcuebanner">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETCUEBANNER = 5892U;
internal const uint CB_OKAY = 0U;
internal const int CB_ERR = -1;
internal const int CB_ERRSPACE = -2;
/// <summary>Gets the starting and ending character positions of the current selection in the edit control of a combo box.</summary>
/// <returns>The return value is a zero-based **DWORD** value with the starting position of the selection in the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) and with the ending position of the first character after the last selected character in the [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-geteditsel">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETEDITSEL = 320U;
/// <summary>Limits the length of the text the user may type into the edit control of a combo box.</summary>
/// <returns>The return value is always **TRUE**.</returns>
/// <remarks>
/// <para>If the combo box does not have the [**CBS\_AUTOHSCROLL**](combo-box-styles.md) style, setting the text limit to be larger than the size of the edit control has no effect. The **CB\_LIMITTEXT** message limits only the text the user can enter. It has no effect on any text already in the edit control when the message is sent, nor does it affect the length of the text copied to the edit control when a string in the list box is selected. The default limit to the text a user can enter in the edit control is 30,000 **TCHARs**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-limittext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_LIMITTEXT = 321U;
/// <summary>An application sends a CB\_SETEDITSEL message to select characters in the edit control of a combo box.</summary>
/// <returns>If the message succeeds, the return value is **TRUE**. If the message is sent to a combo box with the [**CBS\_DROPDOWNLIST**](combo-box-styles.md) style, it is CB\_ERR.</returns>
/// <remarks>The positions are zero-based. The first character of the edit control is in the zero position. The first character after the last selected character is in the ending position. For example, to select the first four characters of the edit control, use a starting position of 0 and an ending position of 4.</remarks>
internal const uint CB_SETEDITSEL = 322U;
/// <summary>Adds a string to the list box of a combo box. If the combo box does not have the CBS\_SORT style, the string is added to the end of the list. Otherwise, the string is inserted into the list, and the list is sorted.</summary>
/// <returns>The return value is the zero-based index to the string in the list box of the combo box. If an error occurs, the return value is CB\_ERR. If insufficient space is available to store the new string, it is CB\_ERRSPACE.</returns>
/// <remarks>
/// <para>If you create an owner-drawn combo box with the [**CBS\_SORT**](combo-box-styles.md) style but without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, the [**WM\_COMPAREITEM**](wm-compareitem.md) message is sent one or more times to the owner of the combo box so the new item can be properly placed in the list. To insert a string at a specific location within the list, use the [**CB\_INSERTSTRING**](cb-insertstring.md) message. If the combo box has [**WS\_HSCROLL**](/windows/desktop/winmsg/window-styles) style and you add a string wider than the combo box, send a [**LB\_SETHORIZONTALEXTENT**](lb-sethorizontalextent.md) message to ensure the horizontal scroll bar appears. **Comclt32.dll version 5.0 or later:** If [**CBS\_LOWERCASE**](combo-box-styles.md) or [**CBS\_UPPERCASE**](combo-box-styles.md) is set, the Unicode version of **CB\_ADDSTRING** alters the string. If using read-only global memory, this causes the application to fail.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-addstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_ADDSTRING = 323U;
/// <summary>Deletes a string in the list box of a combo box.</summary>
/// <returns>The return value is a count of the strings remaining in the list. If the *wParam* parameter specifies an index greater than the number of items in the list, the return value is CB\_ERR.</returns>
/// <remarks>If you create the combo box with an owner-drawn style but without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, the system sends a [**WM\_DELETEITEM**](wm-deleteitem.md) message to the owner of the combo box so the application can free any additional data associated with the item.</remarks>
internal const uint CB_DELETESTRING = 324U;
/// <summary>Adds names to the list displayed by the combo box. The message adds the names of directories and files that match a specified string and set of file attributes. CB\_DIR can also add mapped drive letters to the list.</summary>
/// <returns>
/// <para>If the message succeeds, the return value is the zero-based index of the last name added to the list. If an error occurs, the return value is CB\_ERR. If there is insufficient space to store the new strings, the return value is CB\_ERRSPACE.</para>
/// </returns>
/// <remarks>
/// <para>If *wParam* includes the DDL\_DIRECTORY flag and *lParam* specifies all the subdirectories of a first-level directory, such as C:\\TEMP\\\*, the list box will always include a ".." entry for the root directory. This is true even if the root directory has hidden or system attributes and the DDL\_HIDDEN and DDL\_SYSTEM flags are not specified. The root directory of an NTFS volume has hidden and system attributes. The list displays long file names, if any.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-dir#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_DIR = 325U;
/// <summary>Gets the number of items in the list box of a combo box.</summary>
/// <returns>The return value is the number of items in the list box. If an error occurs, it is CB\_ERR.</returns>
/// <remarks>The index is zero-based, so the returned count is one greater than the index value of the last item.</remarks>
internal const uint CB_GETCOUNT = 326U;
/// <summary>An application sends a CB\_GETCURSEL message to retrieve the index of the currently selected item, if any, in the list box of a combo box.</summary>
/// <returns>The return value is the zero-based index of the currently selected item. If no item is selected, it is CB\_ERR.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getcursel">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETCURSEL = 327U;
/// <summary>Gets a string from the list of a combo box.</summary>
/// <returns>The return value is the length of the string, in **TCHAR**s, excluding the terminating null character. If *wParam* does not specify a valid index, the return value is CB\_ERR.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly can compromise the security of your program. This message does not provide a way for you to know the size of the buffer. If you use this message, first call [**CB\_GETLBTEXTLEN**](cb-getlbtextlen.md) to get the number of characters that are required and then call the message to retrieve the string. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. If you create the combo box with an owner-drawn style but without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, the buffer pointed to by *lParam* receives the data associated with the item.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getlbtext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETLBTEXT = 328U;
/// <summary>Gets the length, in characters, of a string in the list of a combo box.</summary>
/// <returns>
/// <para>The return value is the length of the string, in **TCHAR**s, excluding the terminating null character. If an ANSI string this is the number of bytes, and if it is a Unicode string this is the number of characters. Under certain conditions, this value may actually be greater than the length of the text. For more information, see the Remarks section. If the *wParam* parameter does not specify a valid index, the return value is CB\_ERR.</para>
/// </returns>
/// <remarks>
/// <para>Under certain conditions, the return value is larger than the actual length of the text. This occurs with certain mixtures of ANSI and Unicode, and is due to the operating system allowing for the possible existence of double-byte character set (DBCS) characters within the text. The return value, however, will always be at least as large as the actual length of the text; so you can always use it to guide buffer allocation. This behavior can occur when an application uses both ANSI functions and common dialogs, which use Unicode. To obtain the exact length of the text, use the [**WM\_GETTEXT**](/windows/desktop/winmsg/wm-gettext), [**LB\_GETTEXT**](lb-gettext.md), or [**CB\_GETLBTEXT**](cb-getlbtext.md) messages, or the [**GetWindowText**](/windows/desktop/api/winuser/nf-winuser-getwindowtexta) function.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getlbtextlen#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETLBTEXTLEN = 329U;
/// <summary>Inserts a string or item data into the list of a combo box. Unlike the CB\_ADDSTRING message, the CB\_INSERTSTRING message does not cause a list with the CBS\_SORT style to be sorted.</summary>
/// <returns>
/// <para>The return value is the index of the position at which the string was inserted. If an error occurs, the return value is CB\_ERR. If there is insufficient space available to store the new string, it is CB\_ERRSPACE. If the combo box has [**WS\_HSCROLL**](/windows/desktop/winmsg/window-styles) style and you insert a string wider than the combo box, you should send a [**LB\_SETHORIZONTALEXTENT**](lb-sethorizontalextent.md) message to ensure the horizontal scroll bar appears.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-insertstring">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_INSERTSTRING = 330U;
/// <summary>Removes all items from the list box and edit control of a combo box.</summary>
/// <returns>This message always returns CB\_OKAY.</returns>
/// <remarks>If you create the combo box with an owner-drawn style but without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, the owner of the combo box receives a [**WM\_DELETEITEM**](wm-deleteitem.md) message for each item in the combo box.</remarks>
internal const uint CB_RESETCONTENT = 331U;
/// <summary>Searches the list box of a combo box for an item beginning with the characters in a specified string.</summary>
/// <returns>The return value is the zero-based index of the matching item. If the search is unsuccessful, it is CB\_ERR.</returns>
/// <remarks>If you create the combo box with an owner-drawn style but without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, what the **CB\_FINDSTRING** message does depends on whether your application uses the [**CBS\_SORT**](combo-box-styles.md) style. If you use the **CBS\_SORT** style, [**WM\_COMPAREITEM**](wm-compareitem.md) messages are sent to the owner of the combo box to determine which item matches the specified string. If you do not use the **CBS\_SORT** style, the **CB\_FINDSTRING** message searches for a list item that matches the value of the *lParam* parameter.</remarks>
internal const uint CB_FINDSTRING = 332U;
/// <summary>Searches the list of a combo box for an item that begins with the characters in a specified string. If a matching item is found, it is selected and copied to the edit control.</summary>
/// <returns>If the string is found, the return value is the index of the selected item. If the search is unsuccessful, the return value is CB\_ERR and the current selection is not changed.</returns>
/// <remarks>
/// <para>A string is selected only if the characters from the starting point match the characters in the prefix string. If you create the combo box with an owner-drawn style but without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, what the **CB\_SELECTSTRING** message does depends on whether you use the [**CBS\_SORT**](combo-box-styles.md) style. If the **CBS\_SORT** style is used, the system sends [**WM\_COMPAREITEM**](wm-compareitem.md) messages to the owner of the combo box to determine which item matches the specified string. If you do not use the **CBS\_SORT** style, **CB\_SELECTSTRING** attempts to match the **DWORD** value against the value of the *lParam* parameter.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-selectstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_SELECTSTRING = 333U;
/// <summary>An application sends a CB\_SETCURSEL message to select a string in the list of a combo box.</summary>
/// <returns>If the message is successful, the return value is the index of the item selected. If *wParam* is greater than the number of items in the list or if *wParam* is -1, the return value is CB\_ERR and the selection is cleared.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-setcursel">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_SETCURSEL = 334U;
/// <summary>An application sends a CB\_SHOWDROPDOWN message to show or hide the list box of a combo box that has the CBS\_DROPDOWN or CBS\_DROPDOWNLIST style.</summary>
/// <returns>The return value is always **TRUE**.</returns>
/// <remarks>This message has no effect on a combo box created with the [**CBS\_SIMPLE**](combo-box-styles.md) style.</remarks>
internal const uint CB_SHOWDROPDOWN = 335U;
/// <summary>An application sends a CB\_GETITEMDATA message to a combo box to retrieve the application-supplied value associated with the specified item in the combo box.</summary>
/// <returns>
/// <para>The return value is the value associated with the item. If an error occurs, it is CB\_ERR. If the item is in an owner-drawn combo box created without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, the return value is the value contained in the *lParam* parameter of the [**CB\_ADDSTRING**](cb-addstring.md) or [**CB\_INSERTSTRING**](cb-insertstring.md) message, that added the item to the combo box. If the **CBS\_HASSTRINGS** style was not used, the return value is the *lParam* parameter contained in a [**CB\_SETITEMDATA**](cb-setitemdata.md) message.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getitemdata">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETITEMDATA = 336U;
/// <summary>An application sends a CB\_SETITEMDATA message to set the value associated with the specified item in a combo box.</summary>
/// <returns>If an error occurs, the return value is CB\_ERR.</returns>
/// <remarks>If the specified item is in an owner-drawn combo box created without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, this message replaces the value in the *lParam* parameter of the [**CB\_ADDSTRING**](cb-addstring.md) or [**CB\_INSERTSTRING**](cb-insertstring.md) message that added the item to the combo box.</remarks>
internal const uint CB_SETITEMDATA = 337U;
/// <summary>An application sends a CB\_GETDROPPEDCONTROLRECT message to retrieve the screen coordinates of a combo box in its dropped-down state.</summary>
/// <returns>
/// <para>If the message succeeds, the return value is nonzero. If the message fails, the return value is zero.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getdroppedcontrolrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETDROPPEDCONTROLRECT = 338U;
/// <summary>An application sends a CB\_SETITEMHEIGHT message to set the height of list items or the selection field in a combo box.</summary>
/// <returns>If the index or height is invalid, the return value is CB\_ERR.</returns>
/// <remarks>The selection field height in a combo box is set independently of the height of the list items. An application must ensure that the height of the selection field is not smaller than the height of a particular list item.</remarks>
internal const uint CB_SETITEMHEIGHT = 339U;
/// <summary>Determines the height of list items or the selection field in a combo box.</summary>
/// <returns>The return value is the height, in pixels, of the list items in a combo box. If the combo box has the [**CBS\_OWNERDRAWVARIABLE**](combo-box-styles.md) style, it is the height of the item specified by the *wParam* parameter. If *wParam* is -1, the return value is the height of the edit control (or static-text) portion of the combo box. If an error occurs, the return value is CB\_ERR.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getitemheight">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETITEMHEIGHT = 340U;
/// <summary>An application sends a CB\_SETEXTENDEDUI message to select either the default UI or the extended UI for a combo box that has the CBS\_DROPDOWN or CBS\_DROPDOWNLIST style.</summary>
/// <returns>If the operation succeeds, the return value is CB\_OKAY. If an error occurs, it is CB\_ERR.</returns>
/// <remarks>By default, the F4 key opens or closes the list and the DOWN ARROW changes the current selection. In the extended UI, the F4 key is disabled and the DOWN ARROW key opens the drop-down list. The mouse wheel, which normally scrolls through the items in the list, has no effect when the extended UI is set.</remarks>
internal const uint CB_SETEXTENDEDUI = 341U;
/// <summary>Determines whether a combo box has the default user interface or the extended user interface.</summary>
/// <returns>If the combo box has the extended user interface, the return value is **TRUE**; otherwise, it is **FALSE**.</returns>
/// <remarks>By default, the F4 key opens or closes the list and the DOWN ARROW changes the current selection. In a combo box with the extended user interface, the F4 key is disabled and pressing the DOWN ARROW key opens the drop-down list.</remarks>
internal const uint CB_GETEXTENDEDUI = 342U;
/// <summary>Determines whether the list box of a combo box is dropped down.</summary>
/// <returns>If the list box is visible, the return value is **TRUE**; otherwise, it is **FALSE**.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-getdroppedstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETDROPPEDSTATE = 343U;
/// <summary>Finds the first list box string in a combo box that matches the string specified in the lParam parameter.</summary>
/// <returns>The return value is the zero-based index of the matching item. If the search is unsuccessful, it is CB\_ERR.</returns>
/// <remarks>
/// <para>This function is successful only if the specified string and a combo box item have the same length (except for the terminating null character) and the same characters. If you create the combo box with an owner-drawn style but without the [**CBS\_HASSTRINGS**](combo-box-styles.md) style, the functionality of **CB\_FINDSTRINGEXACT** message depends on whether your application uses the [**CBS\_SORT**](combo-box-styles.md) style. If you use the **CBS\_SORT** style, [**WM\_COMPAREITEM**](wm-compareitem.md) messages are sent to the owner of the combo box to determine which item matches the specified string. If you do not use the **CBS\_SORT** style, the **CB\_FINDSTRINGEXACT** message searches for a list item that matches the value of the *lParam* parameter.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-findstringexact#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_FINDSTRINGEXACT = 344U;
/// <summary>An application sends a CB\_SETLOCALE message to set the current locale of the combo box. If the combo box has the CBS\_SORT style and strings are added using CB\_ADDSTRING, the locale of a combo box affects how list items are sorted.</summary>
/// <returns>The return value is the previous locale identifier. If *wParam* specifies a locale not installed on the system, the return value is CB\_ERR and the current combo box locale is not changed.</returns>
/// <remarks>Use the [**MAKELCID**](/windows/desktop/api/winnt/nf-winnt-makelcid) macro to construct a locale identifier and the [**MAKELANGID**](/windows/desktop/api/winnt/nf-winnt-makelangid) macro to construct a language identifier. The language identifier is made up of a primary language identifier and a sublanguage identifier.</remarks>
internal const uint CB_SETLOCALE = 345U;
/// <summary>Gets the current locale of the combo box. The locale is used to determine the correct sorting order of displayed text for combo boxes with the CBS\_SORT style and text added by using the CB\_ADDSTRING message.</summary>
/// <returns>The return value specifies the current locale of the combo box. The [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)) contains the country/region code and the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) contains the language identifier.</returns>
/// <remarks>The language identifier is made up of a sublanguage identifier and a primary language identifier. The [**PRIMARYLANGID**](/windows/desktop/api/winnt/nf-winnt-primarylangid) macro obtains the primary language identifier and the [**SUBLANGID**](/windows/desktop/api/winnt/nf-winnt-sublangid) macro obtains the sublanguage identifier.</remarks>
internal const uint CB_GETLOCALE = 346U;
/// <summary>An application sends the CB\_GETTOPINDEX message to retrieve the zero-based index of the first visible item in the list box portion of a combo box.</summary>
/// <returns>
/// <para>If the message is successful, the return value is the index of the first visible item in the list box of the combo box. If the message fails, the return value is CB\_ERR.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-gettopindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETTOPINDEX = 347U;
/// <summary>An application sends the CB\_SETTOPINDEX message to ensure that a particular item is visible in the list box of a combo box.</summary>
/// <returns>
/// <para>If the message is successful, the return value is zero. If the message fails, the return value is CB\_ERR.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-settopindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_SETTOPINDEX = 348U;
/// <summary>Gets the width, in pixels, that the list box can be scrolled horizontally (the scrollable width). This is applicable only if the list box has a horizontal scroll bar.</summary>
/// <returns>The return value is the scrollable width, in pixels.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-gethorizontalextent">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_GETHORIZONTALEXTENT = 349U;
/// <summary>An application sends the CB\_SETHORIZONTALEXTENT message to set the width, in pixels, by which a list box can be scrolled horizontally (the scrollable width).</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cb-sethorizontalextent">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CB_SETHORIZONTALEXTENT = 350U;
/// <summary>Gets the minimum allowable width, in pixels, of the list box of a combo box with the CBS\_DROPDOWN or CBS\_DROPDOWNLIST style.</summary>
/// <returns>
/// <para>If the message succeeds, the return value is the width, in pixels. If the message fails, the return value is CB\_ERR.</para>
/// </returns>
/// <remarks>By default, the minimum allowable width of the drop-down list box is zero. The width of the list box is either the minimum allowable width or the combo box width, whichever is larger.</remarks>
internal const uint CB_GETDROPPEDWIDTH = 351U;
/// <summary>An application sends the CB\_SETDROPPEDWIDTH message to set the minimum allowable width, in pixels, of the list box of a combo box with the CBS\_DROPDOWN or CBS\_DROPDOWNLIST style.</summary>
/// <returns>
/// <para>If the message is successful, The return value is the new width of the list box. If the message fails, the return value is CB\_ERR.</para>
/// </returns>
/// <remarks>By default, the minimum allowable width of the drop-down list box is zero. The width of the list box is either the minimum allowable width or the combo box width, whichever is larger.</remarks>
internal const uint CB_SETDROPPEDWIDTH = 352U;
/// <summary>An application sends the CB\_INITSTORAGE message before adding a large number of items to the list box portion of a combo box. This message allocates memory for storing list box items.</summary>
/// <returns>
/// <para>If the message is successful, the return value is the total number of items for which memory has been pre-allocated, that is, the total number of items added by all successful **CB\_INITSTORAGE** messages. If the message fails, the return value is CB\_ERRSPACE. The message allocates memory and returns the success and error values described above.</para>
/// </returns>
/// <remarks>The **CB\_INITSTORAGE** message helps speed up the initialization of combo boxes that have a large number of items (over 100). It reserves the specified amount of memory so that subsequent [**CB\_ADDSTRING**](cb-addstring.md), [**CB\_INSERTSTRING**](cb-insertstring.md), and [**CB\_DIR**](cb-dir.md) messages take the shortest possible time. You can use estimates for the *wParam* and *lParam* parameters. If you overestimate, the extra memory is allocated, if you underestimate, the normal allocation is used for items that exceed the requested amount.</remarks>
internal const uint CB_INITSTORAGE = 353U;
internal const uint CB_MULTIPLEADDSTRING = 355U;
/// <summary>Gets information about the specified combo box.</summary>
/// <returns>
/// <para>If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call [**GetLastError**](/windows/desktop/api/errhandlingapi/nf-errhandlingapi-getlasterror).</para>
/// </returns>
/// <remarks>This message is equivalent to [**GetComboBoxInfo**](/windows/desktop/api/Winuser/nf-winuser-getcomboboxinfo).</remarks>
internal const uint CB_GETCOMBOBOXINFO = 356U;
internal const uint CB_MSGMAX = 357U;
/// <summary>Sent when a combo box cannot allocate enough memory to meet a specific request. The parent window of the combo box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cbn-errspace">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const int CBN_ERRSPACE = -1;
/// <summary>Sent when the user changes the current selection in the list box of a combo box.</summary>
/// <remarks>
/// <para>To get the index of the current selection, send the [**CB\_GETCURSEL**](cb-getcursel.md) message to the control. The CBN\_SELCHANGE notification code is not sent when the current selection is set using the [**CB\_SETCURSEL**](cb-setcursel.md) message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cbn-selchange#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CBN_SELCHANGE = 1U;
/// <summary>Sent when the user double-clicks a string in the list box of a combo box. The parent window of the combo box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>This notification code occurs only for a combo box with the [**CBS\_SIMPLE**](combo-box-styles.md) style. In a combo box with the [**CBS\_DROPDOWN**](combo-box-styles.md) or [**CBS\_DROPDOWNLIST**](combo-box-styles.md) style, a double-click cannot occur because a single click closes the list box.</remarks>
internal const uint CBN_DBLCLK = 2U;
/// <summary>Sent when a combo box receives the keyboard focus. The parent window of the combo box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cbn-setfocus">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CBN_SETFOCUS = 3U;
/// <summary>Sent when a combo box loses the keyboard focus. The parent window of the combo box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cbn-killfocus">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CBN_KILLFOCUS = 4U;
/// <summary>Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box.</summary>
/// <remarks>If the combo box has the [**CBS\_DROPDOWNLIST**](combo-box-styles.md) style, this notification code is not sent.</remarks>
internal const uint CBN_EDITCHANGE = 5U;
/// <summary>Sent when the edit control portion of a combo box is about to display altered text.</summary>
/// <remarks>If the combo box has the [**CBS\_DROPDOWNLIST**](combo-box-styles.md) style, this notification code is not sent.</remarks>
internal const uint CBN_EDITUPDATE = 6U;
/// <summary>Sent when the list box of a combo box is about to be made visible. The parent window of the combo box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>This notification code is only sent if the combo box has the [**CBS\_DROPDOWN**](combo-box-styles.md) or [**CBS\_DROPDOWNLIST**](combo-box-styles.md) style.</remarks>
internal const uint CBN_DROPDOWN = 7U;
/// <summary>Sent when the list box of a combo box has been closed. The parent window of the combo box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para>If the user changed the current selection, the combo box also sends the [CBN\_SELCHANGE](cbn-selchange.md) notification code when the drop-down list closes. In general, you cannot predict the order in which notification codes will be sent. In particular, a CBN\_SELCHANGE notification code may occur either before or after a CBN\_CLOSEUP notification code. To execute a specific process each time the user selects a list item, you can handle either the [CBN\_SELCHANGE](cbn-selchange.md) or CBN\_CLOSEUP notification code. Typically, you would wait for the CBN\_CLOSEUP notification code before processing a change in the current selection. This can be particularly important if a significant amount of processing is required. This notification code is not sent to a combo box that has the [**CBS\_SIMPLE**](combo-box-styles.md) style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/cbn-closeup#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CBN_CLOSEUP = 8U;
/// <summary>Sent when the user selects a list item, or selects an item and then closes the list. It indicates that the user's selection is to be processed. The parent window of the combo box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>In a combo box with the [**CBS\_SIMPLE**](combo-box-styles.md) style, the CBN\_SELENDOK notification code is sent immediately before every [CBN\_SELCHANGE](cbn-selchange.md) notification code.</remarks>
internal const uint CBN_SELENDOK = 9U;
/// <summary>Sent when the user selects an item, but then selects another control or closes the dialog box. It indicates the user's initial selection is to be ignored. The parent window of the combo box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>In a combo box with the [**CBS\_SIMPLE**](combo-box-styles.md) style, the CBN\_SELENDCANCEL notification code is not sent. The [CBN\_SELENDOK](cbn-selendok.md) notification code is sent immediately before every [CBN\_SELCHANGE](cbn-selchange.md) notification code.</remarks>
internal const uint CBN_SELENDCANCEL = 10U;
internal const int CBS_SIMPLE = 1;
internal const int CBS_DROPDOWN = 2;
internal const int CBS_DROPDOWNLIST = 3;
internal const int CBS_OWNERDRAWFIXED = 16;
internal const int CBS_OWNERDRAWVARIABLE = 32;
internal const int CBS_AUTOHSCROLL = 64;
internal const int CBS_OEMCONVERT = 128;
internal const int CBS_SORT = 256;
internal const int CBS_HASSTRINGS = 512;
internal const int CBS_NOINTEGRALHEIGHT = 1024;
internal const int CBS_DISABLENOSCROLL = 2048;
internal const int CBS_UPPERCASE = 8192;
internal const int CBS_LOWERCASE = 16384;
internal const uint CCM_FIRST = 8192U;
internal const uint CCM_LAST = 8704U;
internal const uint CCM_SETBKCOLOR = 8193U;
internal const uint CCM_SETCOLORSCHEME = 8194U;
internal const uint CCM_GETCOLORSCHEME = 8195U;
internal const uint CCM_GETDROPTARGET = 8196U;
/// <summary>Sets the Unicode character format flag for the control. This message enables you to change the character set used by the control at run time rather than having to re-create the control.</summary>
/// <returns>Returns the previous Unicode format flag for the control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ccm-setunicodeformat">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CCM_SETUNICODEFORMAT = 8197U;
/// <summary>Gets the Unicode character format flag for the control.</summary>
/// <returns>Returns the Unicode format flag for the control. If this value is nonzero, the control is using Unicode characters. If this value is zero, the control is using ANSI characters.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ccm-getunicodeformat">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CCM_GETUNICODEFORMAT = 8198U;
/// <summary>This message is used to inform the control that you are expecting a behavior associated with a particular version.</summary>
/// <returns>Returns the version specified in the previous **CCM\_SETVERSION** message. If *wParam* is set to a value greater than the current DLL version, it returns -1.</returns>
/// <remarks>
/// <para>In a few cases, a control may behave differently, depending on the version. This primarily applies to bugs that were fixed in later versions. The **CCM\_SETVERSION** message enables you to inform the control which behavior is expected. You can determine which version you have specified by sending a [**CCM\_GETVERSION**](ccm-getversion.md) message. For an example of how to use this message, see [Custom Draw With List-View and Tree-View Controls](custom-draw.md). If you have ComCtl32.dll version 6 installed, regardless of what value you set in *wParam*, the **CCM\_SETVERSION** message returns version 6. > [!Note] > This message only sets the version number for the control to which it is sent.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ccm-setversion#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CCM_SETVERSION = 8199U;
/// <summary>Gets the version number for a control set by the most recent CCM\_SETVERSION message.</summary>
/// <returns>Returns the version number set by the most recent [**CCM\_SETVERSION**](ccm-setversion.md) message. If no such message has been sent, it returns zero.</returns>
/// <remarks>
/// <para>This message does not return the DLL version. See [Shell Versions](common-control-versions.md) for a discussion of how to use [**DllGetVersion**](/windows/desktop/api/shlwapi/nc-shlwapi-dllgetversionproc) to retrieve the current DLL version. > [!Note] > The version number is set on a control by control basis, and may not be the same for all controls.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ccm-getversion#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CCM_GETVERSION = 8200U;
internal const uint CCM_SETNOTIFYWINDOW = 8201U;
/// <summary>Sets the visual style of a control.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ccm-setwindowtheme#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CCM_SETWINDOWTHEME = 8203U;
/// <summary>Enables automatic high dots per inch (dpi) scaling in Tree-View controls, List-View controls, ComboBoxEx controls, Header controls, Buttons, Toolbar controls, Animation controls, and Image Lists.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>Quick Launch and [Taskbar](/windows/desktop/shell/taskbar) should not specify a dpi scaling, because the images are already scaled. Any control that uses an image list created with the SmallIcon metric should not scale its icons. > [!Note] > To use this API, you must provide a manifest that specifies Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ccm-dpiscale#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CCM_DPISCALE = 8204U;
/// <summary>Retrieves the file name (not including the path) of the currently selected file in an Explorer-style Open or Save As dialog box.</summary>
/// <returns>
/// <para>If the message succeeds, the return value is the size, in characters, of the file name string, including the terminating NULL character. This is either the number of bytes or characters copied to the buffer, or the required buffer size if the buffer is too small. If an error occurs, the return value is less than zero.</para>
/// </returns>
/// <remarks>
/// <para>The corresponding macro is as follows: </para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/dlgbox/cdm-getspec#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint CDM_GETSPEC = 1124U;
internal const uint CDRF_DODEFAULT = 0U;
internal const uint CDRF_NEWFONT = 2U;
internal const uint CDRF_SKIPDEFAULT = 4U;
internal const uint CDRF_DOERASE = 8U;
internal const uint CDRF_SKIPPOSTPAINT = 256U;
internal const uint CDRF_NOTIFYPOSTPAINT = 16U;
internal const uint CDRF_NOTIFYITEMDRAW = 32U;
internal const uint CDRF_NOTIFYSUBITEMDRAW = 32U;
internal const uint CDRF_NOTIFYPOSTERASE = 64U;
internal const uint CHILDID_SELF = 0U;
internal static readonly winmdroot.Foundation.HRESULT CLIPBRD_E_BAD_DATA = (winmdroot.Foundation.HRESULT)(-2147221037);
internal const uint cmb4 = 1139U;
internal const uint COLOR_HUESCROLL = 700U;
internal const uint COLOR_SATSCROLL = 701U;
internal const uint COLOR_LUMSCROLL = 702U;
internal const uint COLOR_HUE = 703U;
internal const uint COLOR_SAT = 704U;
internal const uint COLOR_LUM = 705U;
internal const uint COLOR_RED = 706U;
internal const uint COLOR_GREEN = 707U;
internal const uint COLOR_BLUE = 708U;
internal const uint COLOR_CURRENT = 709U;
internal const uint COLOR_RAINBOW = 710U;
internal const uint COLOR_SAVE = 711U;
internal const uint COLOR_ADD = 712U;
internal const uint COLOR_SOLID = 713U;
internal const uint COLOR_TUNE = 714U;
internal const uint COLOR_SCHEMES = 715U;
internal const uint COLOR_ELEMENT = 716U;
internal const uint COLOR_SAMPLES = 717U;
internal const uint COLOR_PALETTE = 718U;
internal const uint COLOR_MIX = 719U;
internal const uint COLOR_BOX1 = 720U;
internal const uint COLOR_CUSTOM1 = 721U;
internal const uint COLOR_HUEACCEL = 723U;
internal const uint COLOR_SATACCEL = 724U;
internal const uint COLOR_LUMACCEL = 725U;
internal const uint COLOR_REDACCEL = 726U;
internal const uint COLOR_GREENACCEL = 727U;
internal const uint COLOR_BLUEACCEL = 728U;
internal const uint COLOR_SOLID_LEFT = 730U;
internal const uint COLOR_SOLID_RIGHT = 731U;
internal const uint COLOR_MATCH_VERSION = 512U;
internal const uint COLOR_OPTIMIZATION = 1U;
internal const uint COLOR_NO_TRANSPARENT = 4294967295U;
internal const uint CSIDL_DESKTOP = 0U;
internal const uint CSIDL_INTERNET = 1U;
internal const uint CSIDL_PROGRAMS = 2U;
internal const uint CSIDL_CONTROLS = 3U;
internal const uint CSIDL_PRINTERS = 4U;
internal const uint CSIDL_PERSONAL = 5U;
internal const uint CSIDL_FAVORITES = 6U;
internal const uint CSIDL_STARTUP = 7U;
internal const uint CSIDL_RECENT = 8U;
internal const uint CSIDL_SENDTO = 9U;
internal const uint CSIDL_BITBUCKET = 10U;
internal const uint CSIDL_STARTMENU = 11U;
internal const uint CSIDL_MYDOCUMENTS = 5U;
internal const uint CSIDL_MYMUSIC = 13U;
internal const uint CSIDL_MYVIDEO = 14U;
internal const uint CSIDL_DESKTOPDIRECTORY = 16U;
internal const uint CSIDL_DRIVES = 17U;
internal const uint CSIDL_NETWORK = 18U;
internal const uint CSIDL_NETHOOD = 19U;
internal const uint CSIDL_FONTS = 20U;
internal const uint CSIDL_TEMPLATES = 21U;
internal const uint CSIDL_COMMON_STARTMENU = 22U;
internal const uint CSIDL_COMMON_PROGRAMS = 23U;
internal const uint CSIDL_COMMON_STARTUP = 24U;
internal const uint CSIDL_COMMON_DESKTOPDIRECTORY = 25U;
internal const uint CSIDL_APPDATA = 26U;
internal const uint CSIDL_PRINTHOOD = 27U;
internal const uint CSIDL_LOCAL_APPDATA = 28U;
internal const uint CSIDL_ALTSTARTUP = 29U;
internal const uint CSIDL_COMMON_ALTSTARTUP = 30U;
internal const uint CSIDL_COMMON_FAVORITES = 31U;
internal const uint CSIDL_INTERNET_CACHE = 32U;
internal const uint CSIDL_COOKIES = 33U;
internal const uint CSIDL_HISTORY = 34U;
internal const uint CSIDL_COMMON_APPDATA = 35U;
internal const uint CSIDL_WINDOWS = 36U;
internal const uint CSIDL_SYSTEM = 37U;
internal const uint CSIDL_PROGRAM_FILES = 38U;
internal const uint CSIDL_MYPICTURES = 39U;
internal const uint CSIDL_PROFILE = 40U;
internal const uint CSIDL_SYSTEMX86 = 41U;
internal const uint CSIDL_PROGRAM_FILESX86 = 42U;
internal const uint CSIDL_PROGRAM_FILES_COMMON = 43U;
internal const uint CSIDL_PROGRAM_FILES_COMMONX86 = 44U;
internal const uint CSIDL_COMMON_TEMPLATES = 45U;
internal const uint CSIDL_COMMON_DOCUMENTS = 46U;
internal const uint CSIDL_COMMON_ADMINTOOLS = 47U;
internal const uint CSIDL_ADMINTOOLS = 48U;
internal const uint CSIDL_CONNECTIONS = 49U;
internal const uint CSIDL_COMMON_MUSIC = 53U;
internal const uint CSIDL_COMMON_PICTURES = 54U;
internal const uint CSIDL_COMMON_VIDEO = 55U;
internal const uint CSIDL_RESOURCES = 56U;
internal const uint CSIDL_RESOURCES_LOCALIZED = 57U;
internal const uint CSIDL_COMMON_OEM_LINKS = 58U;
internal const uint CSIDL_CDBURN_AREA = 59U;
internal const uint CSIDL_COMPUTERSNEARME = 61U;
internal const uint CSIDL_FLAG_CREATE = 32768U;
internal const uint CSIDL_FLAG_DONT_VERIFY = 16384U;
internal const uint CSIDL_FLAG_DONT_UNEXPAND = 8192U;
internal const uint CSIDL_FLAG_NO_ALIAS = 4096U;
internal const uint CSIDL_FLAG_PER_USER_INIT = 2048U;
internal const uint CSIDL_FLAG_MASK = 65280U;
internal const uint CSIDL_FLAG_PFTI_TRACKTARGET = 16384U;
internal const int CW_USEDEFAULT = -2147483648;
internal const string DATETIMEPICK_CLASS = "SysDateTimePick32";
internal const uint DISPATCH_CONSTRUCT = 16384U;
internal const uint DLGC_WANTARROWS = 1U;
internal const uint DLGC_WANTTAB = 2U;
internal const uint DLGC_WANTALLKEYS = 4U;
internal const uint DLGC_WANTMESSAGE = 4U;
internal const uint DLGC_HASSETSEL = 8U;
internal const uint DLGC_DEFPUSHBUTTON = 16U;
internal const uint DLGC_UNDEFPUSHBUTTON = 32U;
internal const uint DLGC_RADIOBUTTON = 64U;
internal const uint DLGC_WANTCHARS = 128U;
internal const uint DLGC_STATIC = 256U;
internal const uint DLGC_BUTTON = 8192U;
internal const uint DTM_FIRST = 4096U;
/// <summary>Gets the currently selected time from a date and time picker (DTP) control and places it in a specified SYSTEMTIME structure. You can send this message explicitly or use the DateTime\_GetSystemtime macro.</summary>
/// <returns>Returns GDT\_VALID if the time information was successfully placed in *lParam*. Returns GDT\_NONE if the control was set to the [**DTS\_SHOWNONE**](date-and-time-picker-control-styles.md) style and the control check box was not selected. Returns GDT\_ERROR if an error occurs.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-getsystemtime">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_GETSYSTEMTIME = 4097U;
/// <summary>Sets the time in a date and time picker (DTP) control. You can send this message explicitly or use the DateTime\_SetSystemtime macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-setsystemtime">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_SETSYSTEMTIME = 4098U;
/// <summary>Gets the current minimum and maximum allowable system times for a date and time picker (DTP) control. You can send this message explicitly or use the DateTime\_GetRange macro.</summary>
/// <returns>Returns a **DWORD** value that is a combination of GDTR\_MIN or GDTR\_MAX. The first element of the [**SYSTEMTIME**](/windows/desktop/api/minwinbase/ns-minwinbase-systemtime) array contains the minimum allowable time if GDTR\_MIN is set. The second element of the **SYSTEMTIME** array contains the maximum allowable time if GDTR\_MAX is set.</returns>
/// <remarks>The date and time picker displays only dates/times that fall within the specified range, preventing the user from selecting a date and time that falls outside the range. If the [**DTM\_SETSYSTEMTIME**](dtm-setsystemtime.md) message specifies a date and time that falls outside the range, it will fail.</remarks>
internal const uint DTM_GETRANGE = 4099U;
/// <summary>Sets the minimum and maximum allowable system times for a date and time picker (DTP) control. You can send this message explicitly or use the DateTime\_SetRange macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>The date and time picker displays only dates/times that fall within the specified range, preventing the user from selecting a date and time that falls outside the range. If the [**DTM\_SETSYSTEMTIME**](dtm-setsystemtime.md) message specifies a date and time that falls outside the range, it will fail.</remarks>
internal const uint DTM_SETRANGE = 4100U;
/// <summary>Sets the display of a date and time picker (DTP) control based on a given format string. You can send this message explicitly or use the DateTime\_SetFormat macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para>It is acceptable to include extra characters within the format string to produce a more rich display. However, any nonformat characters must be enclosed within single quotes. For example, the format string "'Today is: 'hh':'m':'s ddddMMMdd', 'yyy" would produce output like "Today is: 04:22:31 Tuesday Mar 23, 1996". > [!Note] > A DTP control tracks locale changes when it is using the default format string. If you set a custom format string, it will not be updated in response to locale changes.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-setformat#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_SETFORMATA = 4101U;
/// <summary>Sets the display of a date and time picker (DTP) control based on a given format string. You can send this message explicitly or use the DateTime\_SetFormat macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para>It is acceptable to include extra characters within the format string to produce a more rich display. However, any nonformat characters must be enclosed within single quotes. For example, the format string "'Today is: 'hh':'m':'s ddddMMMdd', 'yyy" would produce output like "Today is: 04:22:31 Tuesday Mar 23, 1996". > [!Note] > A DTP control tracks locale changes when it is using the default format string. If you set a custom format string, it will not be updated in response to locale changes.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-setformat#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_SETFORMATW = 4146U;
/// <summary>Sets the display of a date and time picker (DTP) control based on a given format string. You can send this message explicitly or use the DateTime\_SetFormat macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para>It is acceptable to include extra characters within the format string to produce a more rich display. However, any nonformat characters must be enclosed within single quotes. For example, the format string "'Today is: 'hh':'m':'s ddddMMMdd', 'yyy" would produce output like "Today is: 04:22:31 Tuesday Mar 23, 1996". > [!Note] > A DTP control tracks locale changes when it is using the default format string. If you set a custom format string, it will not be updated in response to locale changes.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-setformat#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_SETFORMAT = 4146U;
/// <summary>Sets the color for a given portion of the month calendar within a date and time picker (DTP) control. You can send this message explicitly or use the DateTime\_SetMonthCalColor macro.</summary>
/// <returns>Returns a **COLORREF** value that represents the previous color setting for the specified portion of the month calendar control if successful. Otherwise, the message returns -1.</returns>
/// <remarks>When visual styles are enabled, this message has no effect except when *wParam* is MCSC\_BACKGROUND.</remarks>
internal const uint DTM_SETMCCOLOR = 4102U;
/// <summary>Gets the color for a given portion of the month calendar within a date and time picker (DTP) control. You can send this message explicitly or use the DateTime\_GetMonthCalColor macro.</summary>
/// <returns>Returns a **COLORREF** value that represents the color setting for the specified portion of the month calendar control if successful. The message returns -1 if unsuccessful.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-getmccolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_GETMCCOLOR = 4103U;
/// <summary>Gets the handle to a date and time picker's (DTP) child month calendar control. You can send this message explicitly or use the DateTime\_GetMonthCal macro.</summary>
/// <returns>Returns the handle to a DTP control's child month calendar control if successful, or **NULL** otherwise.</returns>
/// <remarks>DTP controls create a child month calendar control when the user clicks the drop-down arrow ([DTN\_DROPDOWN](dtn-dropdown.md) notification). When the month calendar is no longer needed, it is destroyed (a [DTN\_CLOSEUP](dtn-closeup.md) notification is sent on destruction). So your application must not rely on a static handle to the DTP control's child month calendar.</remarks>
internal const uint DTM_GETMONTHCAL = 4104U;
/// <summary>Sets the font to be used by the date and time picker (DTP) control's child month calendar control. You can send this message explicitly or use the DateTime\_SetMonthCalFont macro.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-setmcfont">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_SETMCFONT = 4105U;
/// <summary>Gets the font that the date and time picker (DTP) control's child month calendar control is currently using. You can send this message explicitly or use the DateTime\_GetMonthCalFont macro.</summary>
/// <returns>Returns an HFONT value that is the handle to the current font.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-getmcfont">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_GETMCFONT = 4106U;
/// <summary>Sets the style of a date and time picker (DTP) control. Send this message explicitly or by using the DateTime\_SetMonthCalStyle macro.</summary>
/// <returns>Returns the value of the previous style.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-setmcstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_SETMCSTYLE = 4107U;
/// <summary>Gets the style of a date and time picker (DTP) control. Send this message explicitly or by using the DateTime\_GetMonthCalStyle macro.</summary>
/// <returns>Returns the style value of the control. For more information see [Month Calendar Control Styles](month-calendar-control-styles.md).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-getmcstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_GETMCSTYLE = 4108U;
/// <summary>Closes a date and time picker (DTP) control. Send this message explicitly or by using the DateTime\_CloseMonthCal macro.</summary>
/// <returns>Returns zero.</returns>
/// <remarks>Destroys the control and sends a [DTN\_CLOSEUP](dtn-closeup.md) notification that the control is closing as opposed to the control is opening (dropping-down as in the [DTN\_DROPDOWN](dtn-dropdown.md) notification) to the control's parent.</remarks>
internal const uint DTM_CLOSEMONTHCAL = 4109U;
/// <summary>Gets information on a date and time picker (DTP) control.</summary>
/// <returns>Return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-getdatetimepickerinfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_GETDATETIMEPICKERINFO = 4110U;
/// <summary>Gets the size needed to display the control without clipping. Send this message explicitly or by using the DateTime\_GetIdealSize macro.</summary>
/// <returns>Returns **TRUE**.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtm-getidealsize">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTM_GETIDEALSIZE = 4111U;
internal const uint DTN_FIRST = 4294966556U;
internal const uint DTN_LAST = 4294966551U;
internal const uint DTN_FIRST2 = 4294966543U;
internal const uint DTN_LAST2 = 4294966497U;
/// <summary>Sent by a date and time picker (DTP) control whenever a change occurs. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtn-datetimechange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTN_DATETIMECHANGE = 4294966537U;
/// <summary>Sent by a date and time picker (DTP) control when a user finishes editing a string in the control.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner to provide custom responses to strings entered into the control by the user. The owner must be prepared to parse the input string and take action if necessary.</remarks>
internal const uint DTN_USERSTRINGA = 4294966538U;
/// <summary>Sent by a date and time picker (DTP) control when a user finishes editing a string in the control.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner to provide custom responses to strings entered into the control by the user. The owner must be prepared to parse the input string and take action if necessary.</remarks>
internal const uint DTN_USERSTRINGW = 4294966551U;
/// <summary>Sent by a date and time picker (DTP) control when a user finishes editing a string in the control.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner to provide custom responses to strings entered into the control by the user. The owner must be prepared to parse the input string and take action if necessary.</remarks>
internal const uint DTN_USERSTRING = 4294966551U;
/// <summary>Sent by a date and time picker (DTP) control when the user types in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner of the control to provide specific responses to keystrokes within the callback fields of the control.</remarks>
internal const uint DTN_WMKEYDOWNA = 4294966539U;
/// <summary>Sent by a date and time picker (DTP) control when the user types in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner of the control to provide specific responses to keystrokes within the callback fields of the control.</remarks>
internal const uint DTN_WMKEYDOWNW = 4294966552U;
/// <summary>Sent by a date and time picker (DTP) control when the user types in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner of the control to provide specific responses to keystrokes within the callback fields of the control.</remarks>
internal const uint DTN_WMKEYDOWN = 4294966552U;
/// <summary>Sent by a date and time picker (DTP) control to request text to be displayed in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner of the control to provide a custom string that the control will display. (For additional information about callback fields, see [Callback fields](date-and-time-picker-controls.md).)</remarks>
internal const uint DTN_FORMATA = 4294966540U;
/// <summary>Sent by a date and time picker (DTP) control to request text to be displayed in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner of the control to provide a custom string that the control will display. (For additional information about callback fields, see [Callback fields](date-and-time-picker-controls.md).)</remarks>
internal const uint DTN_FORMATW = 4294966553U;
/// <summary>Sent by a date and time picker (DTP) control to request text to be displayed in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must return zero.</returns>
/// <remarks>Handling this notification code allows the owner of the control to provide a custom string that the control will display. (For additional information about callback fields, see [Callback fields](date-and-time-picker-controls.md).)</remarks>
internal const uint DTN_FORMAT = 4294966553U;
/// <summary>Sent by a date and time picker (DTP) control to retrieve the maximum allowable size of the string that will be displayed in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must calculate the maximum possible width of the text that will be displayed in the callback field, set the **szMax** member of the [**NMDATETIMEFORMATQUERY**](/windows/win32/api/commctrl/ns-commctrl-nmdatetimeformatquerya) structure, and return zero.</returns>
/// <remarks>Handling this notification code prepares the control to adjust for the maximum size of the string that will be displayed in a particular callback field. This enables the control to properly display output at all times, reducing flicker within the control's display. (For additional information about callback fields, see [Callback fields](date-and-time-picker-controls.md).)</remarks>
internal const uint DTN_FORMATQUERYA = 4294966541U;
/// <summary>Sent by a date and time picker (DTP) control to retrieve the maximum allowable size of the string that will be displayed in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must calculate the maximum possible width of the text that will be displayed in the callback field, set the **szMax** member of the [**NMDATETIMEFORMATQUERY**](/windows/win32/api/commctrl/ns-commctrl-nmdatetimeformatquerya) structure, and return zero.</returns>
/// <remarks>Handling this notification code prepares the control to adjust for the maximum size of the string that will be displayed in a particular callback field. This enables the control to properly display output at all times, reducing flicker within the control's display. (For additional information about callback fields, see [Callback fields](date-and-time-picker-controls.md).)</remarks>
internal const uint DTN_FORMATQUERYW = 4294966554U;
/// <summary>Sent by a date and time picker (DTP) control to retrieve the maximum allowable size of the string that will be displayed in a callback field. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The owner of the control must calculate the maximum possible width of the text that will be displayed in the callback field, set the **szMax** member of the [**NMDATETIMEFORMATQUERY**](/windows/win32/api/commctrl/ns-commctrl-nmdatetimeformatquerya) structure, and return zero.</returns>
/// <remarks>Handling this notification code prepares the control to adjust for the maximum size of the string that will be displayed in a particular callback field. This enables the control to properly display output at all times, reducing flicker within the control's display. (For additional information about callback fields, see [Callback fields](date-and-time-picker-controls.md).)</remarks>
internal const uint DTN_FORMATQUERY = 4294966554U;
/// <summary>Sent by a date and time picker (DTP) control when the user activates the drop-down month calendar. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>
/// <para>One task that your notification handler may need to perform is to customize the dropdown month-calendar control. For instance, if you do not want "Go To Today," you need to set the control's [**MCS\_NOTODAY**](month-calendar-control-styles.md) style. To retrieve a handle to the month-calendar control, send the DTP control a [**DTM\_GETMONTHCAL**](dtm-getmonthcal.md) message. You can then use this handle and [**SetWindowLong**](/windows/desktop/api/winuser/nf-winuser-setwindowlonga) to set the desired month-calendar style. DTP controls do not maintain a static child month calendar control. The DTP control creates a new month calendar control before sending this notification code. Additionally, the DTP control destroys the child control when it is not active (visible). So your application must not rely on a static window handle to the control's child month calendar.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/dtn-dropdown#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint DTN_DROPDOWN = 4294966542U;
/// <summary>Sent by a date and time picker (DTP) control when the user closes the drop-down month calendar.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>DTP controls do not maintain a static child month calendar control. The DTP control destroys the child month calendar control prior to sending this notification code. So your application must not rely on a static window handle to the control's child month calendar.</remarks>
internal const uint DTN_CLOSEUP = 4294966543U;
internal const uint DTS_UPDOWN = 1U;
internal const uint DTS_SHOWNONE = 2U;
internal const uint DTS_SHORTDATEFORMAT = 0U;
internal const uint DTS_LONGDATEFORMAT = 4U;
internal const uint DTS_SHORTDATECENTURYFORMAT = 12U;
internal const uint DTS_TIMEFORMAT = 9U;
internal const uint DTS_APPCANPARSE = 16U;
internal const uint DTS_RIGHTALIGN = 32U;
internal const uint EC_VARIANT_TYPE_MASK = 127U;
internal const uint EC_VARIANT_TYPE_ARRAY = 128U;
internal const uint EC_READ_ACCESS = 1U;
internal const uint EC_WRITE_ACCESS = 2U;
internal const uint EC_OPEN_ALWAYS = 0U;
internal const uint EC_CREATE_NEW = 1U;
internal const uint EC_OPEN_EXISTING = 2U;
internal const uint EC_LEFTMARGIN = 1U;
internal const uint EC_RIGHTMARGIN = 2U;
internal const uint EC_USEFONTINFO = 65535U;
internal const uint EC_SND_DEVICE_ERROR_BASE = 512U;
/// <summary>A device error has occurred in an audio capture filter.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-snddev-in-error">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_SNDDEV_IN_ERROR = 512U;
/// <summary>A device error has occurred in an audio renderer filter.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-snddev-out-error">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_SNDDEV_OUT_ERROR = 513U;
internal const uint EC_SYSTEMBASE = 0U;
internal const uint EC_USER = 32768U;
/// <summary>All data from a particular stream has been rendered.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**HRESULT**) Status of the stream on completion. If no errors occurred during playback, the value is S\_OK.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* (**IUnknown**\*) Zero, or a pointer to the renderer's [**IBaseFilter**](/windows/desktop/api/Strmif/nn-strmif-ibasefilter) interface.</para>
/// <para>A renderer filter sends this event when it receives an end-of-stream notice. (End-of-stream is signaled through the [**IPin::EndOfStream**](/windows/desktop/api/Strmif/nf-strmif-ipin-endofstream) method.) The filter sends exactly one **EC\_COMPLETE** event for each stream. The filter must process any pending samples before it sends the event. Stopping a renderer resets any end-of-stream state that was cached. If the renderer is paused, it does not send **EC\_COMPLETE** until the [**IMediaFilter::Run**](/windows/desktop/api/Strmif/nf-strmif-imediafilter-run) method is called. Furthermore, it continues to send **EC\_COMPLETE** events for each transition from pause to run, until the filter is either stopped or flushed. Filters set the *lParam2* parameter to an [**IBaseFilter**](/windows/desktop/api/Strmif/nn-strmif-ibasefilter) pointer. If the default action is enabled, the filter graph manager sets this parameter to zero.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-complete#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_COMPLETE = 1U;
/// <summary>The user has terminated playback.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event code signals that the user has terminated normal graph playback. For example, video renderers send this event if the user closes the video window. After sending this event, the filter should reject all samples and not send any [**EC\_REPAINT**](ec-repaint.md) events, until the filter stops and is reset.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-userabort#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_USERABORT = 2U;
/// <summary>EC_ERRORABORT - An operation was aborted because of an error.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-errorabort">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_ERRORABORT = 3U;
internal const uint EC_TIME = 4U;
/// <summary>A video renderer requires a repaint.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**IUnknown**\*) Pointer to the [**IPin**](/windows/desktop/api/Strmif/nn-strmif-ipin) interface of the video renderer's input pin, or **NULL**.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>Video renderers send this message when they receive a [**WM\_PAINT**](/windows/desktop/gdi/wm-paint) message and have no data to display.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-repaint#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_REPAINT = 5U;
/// <summary>A stream has stopped because of an error.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-stream-error-stopped">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_STREAM_ERROR_STOPPED = 6U;
/// <summary>An error occurred in a stream, but the stream is still playing.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-stream-error-stillplaying">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_STREAM_ERROR_STILLPLAYING = 7U;
/// <summary>An asynchronous command to run the graph has failed.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**HRESULT**) Failure code of the operation that failed.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>If the filter graph manager issues an asynchronous run command that fails, it sends this event to the application. The graph remains in a running state. The state of the underlying filters is indeterminate. Some filters might be running, others might not.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-error-stillplaying#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_ERROR_STILLPLAYING = 8U;
/// <summary>The video palette has changed.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>Video renderers send this event if they detect a palette change in the stream.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-palette-changed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_PALETTE_CHANGED = 9U;
/// <summary>The native video size has changed.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**DWORD**) Low-order WORD specifies the new width, in pixels; high-order WORD specifies the new height, in pixels.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>Video renderers may send this event if they detect a change in the native video size. The [Video Mixing Renderer 7](video-mixing-renderer-filter-7.md) (VMR-7) and the [Video Mixing Renderer 9](video-mixing-renderer-filter-9.md) (VMR-9) send this event in windowed mode, but not in windowless mode or renderless mode. For more information about windowed mode in the VMR, see [Video Rendering](video-rendering.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-video-size-changed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_VIDEO_SIZE_CHANGED = 10U;
/// <summary>The graph is dropping samples, for quality control.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>A filter sends this event if it drops samples in response to a quality control message. It sends the event only when it adjusts the quality level, not for each sample that it drops. For more information, see [Quality-Control Management](quality-control-management.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-quality-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_QUALITY_CHANGE = 11U;
/// <summary>The filter graph is shutting down, prior to being destroyed.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-shutting-down">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_SHUTTING_DOWN = 12U;
/// <summary>The reference clock has changed.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The filter graph manager sends this event when its [**IMediaFilter::SetSyncSource**](/windows/desktop/api/Strmif/nf-strmif-imediafilter-setsyncsource) method is called.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-clock-changed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_CLOCK_CHANGED = 13U;
/// <summary>A pause request has completed.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**HRESULT**) Status of the pause opertation.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The filter graph manager sends this event when it completes an asynchronous pause command.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-paused#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_PAUSED = 14U;
/// <summary>The graph is opening a file, or has finished opening a file.</summary>
/// <remarks>A filter can send this event if it spends significant time opening a file. (For example, the file might be located on a network.) The application can use this event to adjust its user interface.</remarks>
internal const uint EC_OPENING_FILE = 16U;
/// <summary>The graph is buffering data, or has stopped buffering data.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**BOOL**) **TRUE** if the graph is starting to buffer, or **FALSE** if the graph has stopped buffering.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>A filter can send this event if it needs to buffer data from an external source. (For example, it might be loading data from a network.) The application can use this event to adjust its user interface.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-buffering-data#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_BUFFERING_DATA = 17U;
/// <summary>The video renderer is switching out of full-screen mode.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* (**IUnknown**\*) Pointer to the video renderer's [**IBaseFilter**](/windows/desktop/api/Strmif/nn-strmif-ibasefilter) interface, or **NULL**.</para>
/// <para>When the [Full Screen Renderer](full-screen-renderer-filter.md) loses activation, it sends this event. When another video renderer switches out of full-screen mode, the filter graph manager sends this event, in response to an [**EC\_ACTIVATE**](ec-activate.md) event from the renderer.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-fullscreen-lost#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_FULLSCREEN_LOST = 18U;
/// <summary>A video window is being activated or deactivated.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**BOOL**) **TRUE** if the window is activated, or **FALSE** if the window is deactivated.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* (**IUnknown**\*) Pointer to the renderer's [**IBaseFilter**](/windows/desktop/api/Strmif/nn-strmif-ibasefilter) interface.</para>
/// <para>A video renderer sends this event whenever its window is activated or deactivated (that is, when it receives a WM\_ACTIVATEAPP message). Window activation or deactivation can occur because the window has gained or lost focus, or because the renderer has switched between full-screen mode and windowed mode. This event enables the filter graph manager to allocate resources that depend on window focus, such as audio devices.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-activate#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_ACTIVATE = 19U;
/// <summary>A filter is requesting that the graph be restarted.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>If a filter rejects a sample in the middle of a stream, the upstream pin will stop delivering samples. The filter can restart the stream by sending this event. For example, the audio renderer might lose access to the sound device, because a video window has lost focus. At that point, the audio renderer starts rejecting samples. When it regains access to the sound device, it sends this event to restart the audio stream.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-need-restart#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_NEED_RESTART = 20U;
/// <summary>The video renderer was destroyed or removed from the graph.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**IUnknown**\*) Pointer to the video renderer's [**IBaseFilter**](/windows/desktop/api/Strmif/nn-strmif-ibasefilter) interface.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The video renderer sends this event when it leaves the filter graph, in its [**IBaseFilter::JoinFilterGraph**](/windows/desktop/api/Strmif/nf-strmif-ibasefilter-joinfiltergraph) method. (Sending the event when the filter is destroyed might be too late, because at that point the filter graph manager might also be destroyed.) This event enables other filters to acquire resources that depend on window focus, such as audio devices.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-window-destroyed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_WINDOW_DESTROYED = 21U;
/// <summary>The display mode has changed.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**IUnknown**\*) Pointer to an array of [**IPin**](/windows/desktop/api/Strmif/nn-strmif-ipin) interfaces for the video renderer's input pins. If *lParam2* is zero, this parameter can be **NULL**.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* If *lParam2* is zero, *lParam1* contains a single **IPin** pointer or equals **NULL**. If *lParam2* is greater than zero, *lParam1* contains an array of **IPin** pointers, and the number of elements in the array is given by *lParam2*.</para>
/// <para>Video renderers can send this event in response to a [**WM\_DISPLAYCHANGE**](/windows/desktop/gdi/wm-displaychange) message. The **WM\_DISPLAYCHANGE** message indicates that the user has changed the display resolution. During pin connection, most video renderers pick a format based on the current display mode. If the display mode changes, the video renderer might need to choose another format. By sending this message, the renderer signals to the filter graph manager that it needs to be reconnected. During the reconnection, the renderer can select a new format. If the reconnection fails, the filter graph manager sends an [**EC\_ERRORABORT**](ec-errorabort.md) event to the application.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-display-changed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DISPLAY_CHANGED = 22U;
/// <summary>A filter is not receiving enough data.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>A parser or source filter can send this event if too little data is arriving.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-starvation#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_STARVATION = 23U;
/// <summary>A filter is passing a text string to the application.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**BSTR**) String of type **BSTR**.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* (**BSTR**) String of type **BSTR**.</para>
/// <para>By convention, the first parameter contains type information (for example, "Text") and the second parameter contains the text string.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-ole-event#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_OLE_EVENT = 24U;
/// <summary>Notifies a filter of the video renderer's window.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**HWND**) Handle to the window.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>When a video renderer is connected, it checks whether the upstream output pin supports the [**IMediaEventSink**](/windows/desktop/api/Strmif/nn-strmif-imediaeventsink) interface. If so, the renderer sends this event to the upstream filter.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-notify-window#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_NOTIFY_WINDOW = 25U;
/// <summary>A stream-control stop command has taken effect.</summary>
/// <remarks>
/// <para><span id="pSender"></span><span id="psender"></span><span id="PSENDER"></span>*pSender* (**IUnknown**\*) Pointer to the [**IPin**](/windows/desktop/api/Strmif/nn-strmif-ipin) interface of the pin that stopped the stream.</para>
/// <para><span id="dwCookie"></span><span id="dwcookie"></span><span id="DWCOOKIE"></span>*dwCookie* (**DWORD**) User-defined value.</para>
/// <para>Filters send this event in response to the [**IAMStreamControl::StopAt**](/windows/desktop/api/Strmif/nf-strmif-iamstreamcontrol-stopat) method. The **StopAt** method specifies a reference time for a pin to stop streaming. When streaming does halt, the filter sends this event. The *pSender* parameter specifies the pin that executes the stop command. Depending on the implementation, it might not be the pin that received the [**StopAt**](/windows/desktop/api/Strmif/nf-strmif-iamstreamcontrol-stopat) call. The *dwCookie* parameter is specified by the application in the [**StopAt**](/windows/desktop/api/Strmif/nf-strmif-iamstreamcontrol-stopat) method. This parameter enables the application to track multiple calls to the method.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-stream-control-stopped#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_STREAM_CONTROL_STOPPED = 26U;
/// <summary>A stream-control start command has taken effect.</summary>
/// <remarks>
/// <para><span id="pSender"></span><span id="psender"></span><span id="PSENDER"></span>*pSender* (**IUnknown**\*) Pointer to the [**IPin**](/windows/desktop/api/Strmif/nn-strmif-ipin) interface of the pin that started the stream.</para>
/// <para><span id="dwCookie"></span><span id="dwcookie"></span><span id="DWCOOKIE"></span>*dwCookie* (**DWORD**) User-defined value.</para>
/// <para>Filters send this event in response to the [**IAMStreamControl::StartAt**](/windows/desktop/api/Strmif/nf-strmif-iamstreamcontrol-startat) method. This method specifies a reference time for a pin to begin streaming. When streaming does begin, the filter sends this event. The *pSender* parameter specifies the pin that executes the start command. Depending on the implementation, it might not be the pin that received the [**StartAt**](/windows/desktop/api/Strmif/nf-strmif-iamstreamcontrol-startat) call. The *dwCookie* parameter is specified by the application in the [**StartAt**](/windows/desktop/api/Strmif/nf-strmif-iamstreamcontrol-startat) method. This parameter enables the application to track multiple calls to the method.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-stream-control-started#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_STREAM_CONTROL_STARTED = 27U;
/// <summary>The end of a segment was reached.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**const** **REFERENCE\_TIME**\*) Pointer to a **REFERENCE\_TIME** value that specifies the accumulated stream time since the start of the segment, in 100-nanosecond units.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* (**DWORD**) Segment number (zero-based).</para>
/// <para>This event code supports seamless looping. When a call to the [**IMediaSeeking::SetPositions**](/windows/desktop/api/Strmif/nf-strmif-imediaseeking-setpositions) method includes the AM\_SEEKING\_Segment flag, the source filter sends this event code instead of calling [**IPin::EndOfStream**](/windows/desktop/api/Strmif/nf-strmif-ipin-endofstream).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-end-of-segment#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_END_OF_SEGMENT = 28U;
/// <summary>A new segment has started.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**const** **REFERENCE\_TIME**\*) Pointer to a **REFERENCE\_TIME** value that specifies the accumulated stream time since the start of the segment, in 100-nanosecond units.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* (**DWORD**) Segment number (zero-based).</para>
/// <para>If a filter will send an [**EC\_END\_OF\_SEGMENT**](ec-end-of-segment.md) at the end of a segment, it sends this event at the start of the segment. The filter graph manager uses this event notification to compute how many EC\_END\_OF\_SEGMENT notifications it should expect at the end of the segment. By default, filters do not send [**EC\_END\_OF\_SEGMENT**](ec-end-of-segment.md) events at the end of segments, and therefore should not send this event. For more information, see [**IMediaSeeking::SetPositions**](/windows/desktop/api/Strmif/nf-strmif-imediaseeking-setpositions).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-segment-started#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_SEGMENT_STARTED = 29U;
/// <summary>The length of a source has changed.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-length-changed">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_LENGTH_CHANGED = 30U;
/// <summary>A Plug and Play device was removed or became available again.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**IUnknown**\*) Pointer to the **IUnknown** interface of the filter that represents the device.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero if the device was removed, or 1 if the device is available again.</para>
/// <para>When the device becomes available again, the previous state of the device filter is no longer valid. The application must rebuild the graph in order to use the device.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-device-lost#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DEVICE_LOST = 31U;
/// <summary>Requests a new input sample from the Enhanced Video Renderer (EVR) filter.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Identifier of the input stream that needs new input.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The mixer for the EVR filter sends this message when it needs a new input sample.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-sample-needed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_SAMPLE_NEEDED = 32U;
/// <summary>Indicates the amount of time that a component is taking to process each sample.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**const REFERENCE\_TIME**\*) The amount of time to process each sample, in 100-nanosecond units.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>A presenter for the [**Enhanced Video Renderer**](enhanced-video-renderer-filter.md) (EVR) filter can send this message to the EVR to notify the EVR about the presenter's processing latency.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-processing-latency#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_PROCESSING_LATENCY = 33U;
/// <summary>Specifies how far behind schedule a component is for processing samples.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**const REFERENCE\_TIME**\*) How far behind the component is, in 100-nanosecond units. If this value is positive, the component is behind schedule. If this value is negative, the component is ahead of schedule.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>A custom presenter for the [**Enhanced Video Renderer**](enhanced-video-renderer-filter.md) (EVR) filter can send this message to the EVR, to notify the EVR whether the presenter is behind schedule or ahead of schedule. The simplest way to calculate *lParam1* is: *QPC now* *QPC target*, where *QPC now* is the clock time now, and *QPC target* is the presentation time.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-sample-latency#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_SAMPLE_LATENCY = 34U;
/// <summary>Specifies the time stamp for the most recent frame step.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**DWORD**) Lower 32 bits of the time stamp.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* (**DWORD**) Upper 32 bits of the time stamp.</para>
/// <para>The presenter for the [**Enhanced Video Renderer**](enhanced-video-renderer-filter.md) (EVR) filter sends this message to the EVR when it completes a frame step.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-scrub-time#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_SCRUB_TIME = 35U;
/// <summary>A filter has completed frame stepping.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-step-complete">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_STEP_COMPLETE = 36U;
/// <summary>EC_TIMECODE_AVAILABLE - Not supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-timecode-available">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_TIMECODE_AVAILABLE = 48U;
/// <summary>EC_EXTDEVICE_MODE_CHANGE - Not supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-extdevice-mode-change">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_EXTDEVICE_MODE_CHANGE = 49U;
/// <summary>The filter graph has changed state.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-state-change">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_STATE_CHANGE = 50U;
/// <summary>The filter graph has changed.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event code is intended for debugging. It is not sent for all graph changes.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-graph-changed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_GRAPH_CHANGED = 80U;
/// <summary>The clock provider was disconnected.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>KSProxy signals this event when the pin of a clock-providing filter is disconnected.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-clock-unset#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_CLOCK_UNSET = 81U;
/// <summary>Sent when the VMR has selected its rendering mechanism.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* May be one of the following values:</para>
/// <para>| Value | Meaning | |------------------------------|----------------------------------------------------------| | VMR\_RENDER\_DEVICE\_OVERLAY | The VMR will render to the overlay surface (VMR-7 only). | | VMR\_RENDER\_DEVICE\_VIDMEM | The VMR will render to video memory. | | VMR\_RENDER\_DEVICE\_SYSMEM | The VMR will render to system memory (VMR-7 only). |</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Not used.</para>
/// <para>This event is sent by both the VMR-7 and the VMR-9 and it is forwarded to applications. Note that the VMR-9 only supports video memory render targets.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-vmr-renderdevice-set#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_VMR_RENDERDEVICE_SET = 83U;
/// <summary>Sent when the VMR-7's allocator presenter has called the DirectDraw Flip method on the surface being presented. This allows the VMR to keep its DirectXVA table of surfaces synchronized with DirectDraw's flipping chain.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**HRESULT**) Status code returned from the DirectDraw Flip method.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Not used.</para>
/// <para>Custom allocator-presenters for the VMR-7 should send this event. This event is not forwarded to applications and it is not used with allocator-presenters for the VMR-9.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-vmr-surface-flipped#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_VMR_SURFACE_FLIPPED = 84U;
/// <summary>Sent by the VMR-7 and the VMR-9 when it was unable to accept a dynamic format change request from the upstream decoder.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* (**HRESULT**) Status code returned from [**IPin::ReceiveConnection**](/windows/desktop/api/Strmif/nf-strmif-ipin-receiveconnection) on the VMR's input pin that failed the reconnection.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Not used.</para>
/// <para>This event is forwarded to applications.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-vmr-reconnection-failed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_VMR_RECONNECTION_FAILED = 85U;
/// <summary>Sent by the WM ASF Writer filter when it completes the pre-processing for multipass encoding.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-preprocess-complete">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_PREPROCESS_COMPLETE = 86U;
/// <summary>The EC\_CODECAPI\_EVENT event is sent by an encoder to signal an encoding event. The client registers for encoder event by calling the ICodecAPI::RegisterForEvent method.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-codecapi-event">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_CODECAPI_EVENT = 87U;
internal const uint EC_WMT_EVENT_BASE = 593U;
/// <summary>Sent when an application uses the WM ASF Writer filter to index Windows Media Video files.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-wmt-index-event">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_WMT_INDEX_EVENT = 593U;
/// <summary>Sent by the WM ASF Reader filter when it reads ASF files protected by digital rights management (DRM).</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* One of the following **WMT\_STATUS** values:</para>
/// <para>| Value | Description | |-------------------------------|-------------------------------------------------------------------------------------------------------------------| | WMT\_ACQUIRE\_LICENSE | Sent when the DRM component has completed the license acquisition process, either successfully or unsuccessfully. | | WMT\_INDIVIDUALIZE | The security upgrade process has completed, either successfully or unsuccessfully. | | WMT\_NEEDS\_INDIVIDUALIZATION | The file requires that an application receive a security upgrade before performing the requested action. | | WMT\_NO\_RIGHTS | The application has no rights to perform he requested action on a file protected by DRM version 1. | | WMT\_NO\_RIGHTS\_EX | The application has no rights to perform he requested action on a file protected by DRM version 7. |</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Pointer to an [**AM\_WMT\_EVENT\_DATA**](/previous-versions/windows/desktop/api/evcode/ns-evcode-am_wmt_event_data) structure that contains information about the event, or **NULL**. The **pData** member of this structure points to additional data, whose type depends on the value of **lParam1**, as shown in the following table.</para>
/// <para>| lParam1 | AM\_WMT\_EVENT\_DATA.pData | |-------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------| | WMT\_ACQUIRE\_LICENSE | Pointer to a [**WM\_GET\_LICENSE\_DATA**](/windows/desktop/wmformat/wm-get-license-data) structure. This structure is documented in the Windows Media Format SDK. | | WMT\_INDIVIDUALIZE | Pointer to a [**WM\_INDIVIDUALIZE\_STATUS**](/windows/desktop/wmformat/wm-individualize-status) structure. | | WMT\_NEEDS\_INDIVIDUALIZATION | **NULL**. | | WMT\_NO\_RIGHTS | Pointer to a wide-character string containing a challenge URL. | | WMT\_NO\_RIGHTS\_EX | Pointer to a [**WM\_GET\_LICENSE\_DATA**](/windows/desktop/wmformat/wm-get-license-data) structure. |</para>
/// <para>The value of *lParam2* might be **NULL**. Check the value before dereferencing the pointer.</para>
/// <para>See the Windows Media Format SDK documentation for more information on enabling playback of DRM-protected files.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-wmt-event#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_WMT_EVENT = 594U;
/// <summary>The EC\_BUILT event is sent by the Video Control when a graph has been completely built. This event is not forwarded to applications.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-built">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_BUILT = 768U;
/// <summary>The EC\_UNBUILT event is sent by the Video Control when a graph has been torn down. This event is not forwarded to applications.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-unbuilt">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_UNBUILT = 769U;
/// <summary>Sent by the DVD Navigator when it needs to skip frames.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-skip-frames">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_SKIP_FRAMES = 37U;
/// <summary>The source file has changed. The application should rebuild the filter graph.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The legacy [Windows Media Source](windows-media-source-filter.md) filter sends this event. New filters should not send this event.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-please-reopen#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_PLEASE_REOPEN = 64U;
/// <summary>Contains two arbitrary status strings.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-status">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_STATUS = 65U;
/// <summary>EC_MARKER_HIT - This event is not supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-marker-hit">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_MARKER_HIT = 66U;
/// <summary>Notifies the application of progress when opening a network file.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Status code. See Remarks.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The [WM ASF Reader](wm-asf-reader-filter.md) filter and the legacy [Windows Media Source](windows-media-source-filter.md) filter send this event. The first event parameter has one of the following values.</para>
/// <para>| Value | Description | |------------------------------|------------------------------------------------| | AM\_LOADSTATUS\_CLOSED | The source filter has closed the file. | | AM\_LOADSTATUS\_CONNECTING | The source filter is connecting to the server. | | AM\_LOADSTATUS\_LOADINGDESCR | Not used. | | AM\_LOADSTATUS\_LOADINGMCAST | Not used | | AM\_LOADSTATUS\_LOCATING | The source filter is locating requested data. | | AM\_LOADSTATUS\_OPEN | The source filter has opened the file. | | AM\_LOADSTATUS\_OPENING | The source filter is opening the file. |</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-loadstatus#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_LOADSTATUS = 67U;
/// <summary>The source file was closed because of an unexpected event. For example, the network server was shut down.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The legacy Windows Media Source filter sends this event. New filters should not send this event.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-file-closed#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_FILE_CLOSED = 68U;
/// <summary>EC_ERRORABORTEX - An operation was aborted because of an error.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* **(HRESULT)** Failure code of the operation that failed.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* **(BSTR)** String that contains additional error information.</para>
/// <para>The legacy [Windows Media Source](windows-media-source-filter.md) filter sends this event. New filters should not send this event.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-errorabortex#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_ERRORABORTEX = 69U;
/// <summary>EC_NEW_PIN - This event is not supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-new-pin">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_NEW_PIN = 32U;
/// <summary>EC_RENDER_FINISHED - This event is not supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-render-finished">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_RENDER_FINISHED = 33U;
/// <summary>EC_EOS_SOON - This event is not supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-eos-soon">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_EOS_SOON = 70U;
/// <summary>EC_CONTENTPROPERTY_CHANGED - This event is not supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-contentproperty-changed">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_CONTENTPROPERTY_CHANGED = 71U;
/// <summary>EC_BANDWIDTHCHANGE - This event is not supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-bandwidthchange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_BANDWIDTHCHANGE = 72U;
/// <summary>A video frame is ready for display.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The legacy [Windows Media Source](windows-media-source-filter.md) filter sends this event. New filters should not send this event.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-videoframeready#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_VIDEOFRAMEREADY = 73U;
internal const uint EC_DVDBASE = 256U;
/// <summary>Indicates the DVD player's new domain.</summary>
/// <remarks>
/// <para>The DVD player signals this event whenever it changes domains. This event is raised in all DVD domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-domain-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_DOMAIN_CHANGE = 257U;
/// <summary>Indicates when the current DVD title number changes.</summary>
/// <remarks>
/// <para>Title numbers range from 1 to 99. This number indicates the TTN, which is the title number with respect to the whole disc, not the VTS\_TTN which is the title number with respect to just a current VTS. This event is raised in the title domain.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-title-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_TITLE_CHANGE = 258U;
/// <summary>Signals that the DVD player started playback of a new program in the DVD\_DOMAIN\_Title domain.</summary>
/// <remarks>
/// <para>Only simple linear movies signal this event. This event is raised in the title domain.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-chapter-start#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_CHAPTER_START = 259U;
/// <summary>Signals that the current audio stream number changed for the DVD main title.</summary>
/// <remarks>
/// <para>The current audio stream can change automatically with a navigation command authored on the disc as well as through application control by using the [**IDvdControl2**](/windows/desktop/api/Strmif/nn-strmif-idvdcontrol2) interface. This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-audio-stream-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_AUDIO_STREAM_CHANGE = 260U;
/// <summary>Signals that the current subpicture stream number changed for the main title.</summary>
/// <remarks>
/// <para>The subpicture can change automatically with a navigation command authored on disc as well as through application control using [**IDvdControl2**](/windows/desktop/api/Strmif/nn-strmif-idvdcontrol2). This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-subpicture-stream-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_SUBPICTURE_STREAM_CHANGE = 261U;
/// <summary>Signals that either the number of available angles changed or that the current angle number changed.</summary>
/// <remarks>
/// <para>Angle numbers range from 1 to 9. The current angle number can change automatically with a navigation command authored on the disc as well as through application control by using the [**IDvdControl2**](/windows/desktop/api/Strmif/nn-strmif-idvdcontrol2) interface. This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-angle-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_ANGLE_CHANGE = 262U;
/// <summary>Signals that the number of DVD menu buttons has changed, or that the button selection has changed.</summary>
/// <remarks>
/// <para>Button numbers range from 1 to 36. The currently selected button can change automatically with a navigation command authored on the disc as well as through application control by using [**IDvdControl2**](/windows/desktop/api/Strmif/nn-strmif-idvdcontrol2) interface. This event can signal any of the available button numbers. These numbers do not always correspond to button numbers used for [**IDvdControl2::SelectAndActivateButton**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-selectandactivatebutton) because that method can activate only a subset of buttons. This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-button-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_BUTTON_CHANGE = 263U;
/// <summary>Signals that the available set of IDvdControl2 interface methods has changed.</summary>
/// <remarks>
/// <para>This event indicates only which operations are explicitly disabled by the content on the DVD disc. It does not guarantee that it is valid to call methods that are not disabled. For example, if no buttons are present, the [**IDvdControl2::ActivateButton**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-activatebutton) method won't work, even though the method is not explicitly disabled. This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-valid-uops-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_VALID_UOPS_CHANGE = 264U;
/// <summary>Signals the beginning of any still (PGC, Cell, or VOBU).</summary>
/// <remarks>
/// <para>All combinations of buttons and still are possible (buttons on with still on, buttons on with still off, button off with still on, button off with still off). This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-still-on#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_STILL_ON = 265U;
/// <summary>Signals the end of any still (PGC, Cell, or VOBU).</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event indicates that any currently active still has been released. This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-still-off#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_STILL_OFF = 266U;
/// <summary>Signals the beginning of every video object unit (VOBU), a video segment which is 0.4 to 1.0 seconds in length.</summary>
/// <remarks>
/// <para>Only simple linear movies signal this event. This event is raised in the title domain.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-current-time#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_CURRENT_TIME = 267U;
/// <summary>Signals a DVD error condition.</summary>
/// <remarks>This event is raised in all domains.</remarks>
internal const uint EC_DVD_ERROR = 268U;
/// <summary>Signals a DVD warning condition.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-warning">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_WARNING = 269U;
/// <summary>Indicates that DVD playback stopped as the result of a call to the IDvdControl2::PlayChaptersAutoStop method.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event is raised in the title domain.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-chapter-autostop#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_CHAPTER_AUTOSTOP = 270U;
/// <summary>Signals that the DVD disc does not have a FP\_PGC (First Play Program Chain) and that the DVD Navigator will not automatically load any PGC and start playback.</summary>
/// <remarks>This event is raised from the First Play domain.</remarks>
internal const uint EC_DVD_NO_FP_PGC = 271U;
/// <summary>Signals that a rate change in DVD playback has been initiated.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* LONG indicating the new playback rate. The value is the actual playback rate multiplied by 10,000, so the playback rate equals 10000.0 / *lParam1*. Values less than zero indicate reverse playback mode, and values greater than zero indicate forward playback mode.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event is raised in the title domain. Playback *rate* is the inverse of playback *speed*. For example, if playback speed is 2x, the rate is 0.5.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-playback-rate-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_PLAYBACK_RATE_CHANGE = 272U;
/// <summary>Signals that the parental level of the authored DVD content is about to change.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* LONG value representing the new parental level set in the player.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>The [DVD Navigator](dvd-navigator-filter.md) filter does not support parental level changes during streaming in response to SetTmpPML commands on a DVD disc.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-parental-level-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_PARENTAL_LEVEL_CHANGE = 273U;
/// <summary>Indicates that DVD playback has been stopped. This event is sent when a title or chapter completes and the DVD Navigator does not find any other branching instruction for subsequent playback. The event is not sent when the application stops playback.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* A member of the [**DVD\_PB\_STOPPED**](/previous-versions/windows/desktop/api/dvdevcod/ne-dvdevcod-dvd_pb_stopped) enumeration, indicating why playback stopped.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-playback-stopped#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_PLAYBACK_STOPPED = 274U;
/// <summary>Indicates whether an angle block is being played and angle changes can be performed.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Boolean (**BOOL**) value that indicates if an angle block is being played back. Zero (0) indicates that playback is not in an angle block and angles are not available, One (1) indicates that an angle block is being played back and angle changes can be performed.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>Angle changes are not restricted to angle blocks and the manifestation of the angle change can be seen only in an angle block.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-angles-available#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_ANGLES_AVAILABLE = 275U;
/// <summary>Indicates that the Navigator has finished playing the segment specified in a call to IDvdControl2::PlayPeriodInTitleAutoStop.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event is raised in the Title domain. This event is also sent when playback is canceled before the Navigator finishes playing the specified segment.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-playperiod-autostop#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_PLAYPERIOD_AUTOSTOP = 276U;
/// <summary>Signals that a DVD menu button has been automatically activated per instructions on the disc. This occurs when a menu times out and the disc has specified a button to be automatically activated.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-button-auto-activated">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_BUTTON_AUTO_ACTIVATED = 277U;
/// <summary>Signals that a DVD Navigator command has begun.</summary>
/// <remarks>
/// <para>This event is only fired if your application sets the **DVD\_CMD\_FLAG\_SendEvents** flag in an [**IDvdControl2**](/windows/desktop/api/Strmif/nn-strmif-idvdcontrol2) method that takes a [**DVD\_CMD\_FLAGS**](/windows/win32/api/strmif/ne-strmif-dvd_cmd_flags) flag. This event is raised in the title domain.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-cmd-start#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_CMD_START = 278U;
/// <summary>Signals that a particular DVD Navigator command has completed.</summary>
/// <remarks>
/// <para>This event is only fired if your application sets the DVD\_CMD\_FLAG\_SendEvents flag in an [**IDvdControl2**](/windows/desktop/api/Strmif/nn-strmif-idvdcontrol2) method that takes a [**DVD\_CMD\_FLAGS**](/windows/win32/api/strmif/ne-strmif-dvd_cmd_flags) flag. This event is raised in the title domain.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-cmd-end#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_CMD_END = 279U;
/// <summary>Signals that a DVD disc was ejected.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>Playback automatically stops when a disc is ejected. The application does not have to take any special action in response to this event. This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-disc-ejected#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_DISC_EJECTED = 280U;
/// <summary>Signals that a DVD disc was inserted into the drive.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Zero.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>Playback automatically begins when a disc is inserted. The application does not have to take any special action in response to this event. This event is raised in all domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-disc-inserted#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_DISC_INSERTED = 281U;
/// <summary>Signals the current time, in DVD\_HMSF\_TIMECODE format, relative to the start of the title. This event is triggered at the beginning of every VOBU, which occurs every 0.4 to 1.0 seconds.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* A ULONG value that contains the DVD\_HMSF\_TIMECODE structure. Assign lParam1 to a ULONG variable and then cast that variable to a DVD\_HMSF\_TIMECODE to access its values.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* A ULONG value containing a union of [**DVD\_TIMECODE\_FLAGS**](/windows/win32/api/strmif/ne-strmif-dvd_timecode_flags).</para>
/// <para>The DVD\_HMSF\_TIMECODE format is intended to replace the old BCD format that is returned in EC\_DVD\_CURRENT\_TIME events. The HMSF timecodes are easier to work with. To have the Navigator send EC\_DVD\_CURRENT\_HMSF\_TIME events instead of EC\_DVD\_CURRENT\_TIME events, an application must call `IDvdControl2::SetOption(DVD_HMSF_TimeCodeEvents, TRUE)`. When this flag is set, the Navigator will also expect all time parameters in the [**IDvdControl2**](/windows/desktop/api/Strmif/nn-strmif-idvdcontrol2) and [**IDvdInfo2**](/windows/desktop/api/Strmif/nn-strmif-idvdinfo2) methods to be passed as DVD\_HMSF\_TIMECODEs. This event is raised in the title domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-current-hmsf-time#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_CURRENT_HMSF_TIME = 282U;
/// <summary>Indicates that the DVD Navigator has either begun playing or finished playing karaoke data.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Boolean value. If **TRUE**, a karaoke track is being played. Otherwise, no karaoke track is being played.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Reserved.</para>
/// <para>The DVD player signals this event whenever it changes domains. This event is raised in all DVD domains.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-karaoke-mode#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_KARAOKE_MODE = 283U;
/// <summary>Sent when the DVD program number or cell number changes.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* The new program number.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* The new cell number.</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_NotifyPositionChange** option to **TRUE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-program-cell-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_PROGRAM_CELL_CHANGE = 284U;
/// <summary>Sent when current Video Title Set (VTS) changes.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* The new Video Title Set Number (VTSN).</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_NotifyPositionChange** option to **TRUE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-title-set-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_TITLE_SET_CHANGE = 285U;
/// <summary>Sent when current program chain (PGC) changes.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* The new program chain number (PGCN).</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* The locale identifier (LCID) of the audio language.</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_NotifyPositionChange** option to **TRUE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-program-chain-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_PROGRAM_CHAIN_CHANGE = 286U;
/// <summary>EC_DVD_VOBU_Offset - Sent when the DVD Navigator parses a PCI packet.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* The block offset of the most recent video object unit (VOBU).</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* The current video title set number (VTSN).</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_EnableLoggingEvents** option to **TRUE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-vobu-offset#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_VOBU_Offset = 287U;
/// <summary>EC_DVD_VOBU_Timestamp - Sent when the DVD Navigator parses a PCI packet.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* Contains the low-order **DWORD** of the time stamp.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Contains the high-order **DWORD** of the time stamp.</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_EnableLoggingEvents** option to **TRUE**. Reconstruct the time stamp as follows:</para>
/// <para></para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-vobu-timestamp#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_VOBU_Timestamp = 288U;
/// <summary>Sent when the value of a general parameter register (GPRM) changes.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* The zero-based index of the GPRM value that changed.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* The lower 16 bits contains the new GPRM value.</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_EnableLoggingEvents** option to **TRUE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-gprm-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_GPRM_Change = 289U;
/// <summary>Sent when the value of a system parameter register (SPRM) changes.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* The zero-based index of the SPRM value that changed.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* The lower 16 bits contains the new SPRM value.</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_EnableLoggingEvents** option to **TRUE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-sprm-change#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_SPRM_Change = 290U;
/// <summary>Sent when a set of DVD navigation commands are starting.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* A value from the [**DVD\_NavCmdType**](/windows/win32/api/strmif/ne-strmif-dvd_navcmdtype) enumeration.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* Zero.</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_EnableLoggingEvents** option to **TRUE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-beginnavigationcommands#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_BeginNavigationCommands = 291U;
/// <summary>Sent when the DVD Navigator processes a DVD navigation command.</summary>
/// <remarks>
/// <para><span id="lParam1"></span><span id="lparam1"></span><span id="LPARAM1"></span>*lParam1* The lower 32 bits of the raw navigation command.</para>
/// <para><span id="lParam2"></span><span id="lparam2"></span><span id="LPARAM2"></span>*lParam2* The upper 32 bits of the raw navigation command.</para>
/// <para>This event is disabled by default. To enable this event, call [**IDvdControl2::SetOption**](/windows/desktop/api/Strmif/nf-strmif-idvdcontrol2-setoption) and set the **DVD\_EnableLoggingEvents** option to **TRUE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/DirectShow/ec-dvd-navigationcommand#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EC_DVD_NavigationCommand = 292U;
internal const uint ECO_AUTOWORDSELECTION = 1U;
internal const uint ECO_AUTOVSCROLL = 64U;
internal const uint ECO_AUTOHSCROLL = 128U;
internal const uint ECO_NOHIDESEL = 256U;
internal const uint ECO_READONLY = 2048U;
internal const uint ECO_WANTRETURN = 4096U;
internal const uint ECO_SAVESEL = 32768U;
internal const uint ECO_SELECTIONBAR = 16777216U;
internal const uint ECO_VERTICAL = 4194304U;
internal const uint ECOOP_SET = 1U;
internal const uint ECOOP_OR = 2U;
internal const uint ECOOP_AND = 3U;
internal const uint ECOOP_XOR = 4U;
internal const uint EN_FIRST = 4294965776U;
internal const uint EN_LAST = 4294965756U;
/// <summary>Sent when an edit control loses the keyboard focus. The parent window of the edit control receives this notification code through a WM\_NOTIFY message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-searchweb">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_SEARCHWEB = 4294965776U;
/// <summary>Notifies a rich edit control's parent window of a keyboard or mouse event in the control. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>Return zero if the control should process the keyboard or mouse event. Return nonzero if the control should ignore the keyboard or mouse event.</para>
/// </returns>
/// <remarks>
/// <para>To receive EN\_MSGFILTER notification codes for events, specify one or more of the following flags in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</para>
/// <para>| Flag | Meaning | |----------------------------------------------------------------------------------|--------------------------------------------------------| | [**ENM\_KEYEVENTS**](rich-edit-control-event-mask-flags.md) | To receive notification codes for keyboard events. | | [**ENM\_MOUSEEVENTS**](rich-edit-control-event-mask-flags.md) | To receive notification codes for mouse events. | | [**ENM\_SCROLLEVENTS**](rich-edit-control-event-mask-flags.md) | To receive notification codes for a mouse wheel event. |</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-msgfilter#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_MSGFILTER = 1792U;
/// <summary>Notifies a rich edit control's parent window that the control's contents are either smaller or larger than the control's window size. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>This notification code does not return a value.</returns>
/// <remarks>
/// <para>To support the bottomless behavior of a rich edit control, the parent window must resize the control when it receives this notification code. To receive EN\_REQUESTRESIZE notification codes, specify [**ENM\_REQUESTRESIZE**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-requestresize#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_REQUESTRESIZE = 1793U;
/// <summary>Notifies a rich edit control's parent window that the current selection has changed. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>This notification code does not return a value.</returns>
/// <remarks>
/// <para>To receive EN\_SELCHANGE notification codes, specify [**ENM\_SELCHANGE**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. This notification code is sent when the caret position changes and no text is selected (the selection is empty). The caret position can change when the user clicks the mouse, types, or presses an arrow key.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-selchange#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_SELCHANGE = 1794U;
/// <summary>Notifies a rich edit control parent window that the user is attempting to drop files into the control. A rich edit control sends this notification code in the form of a WM\_NOTIFY message when it receives the WM\_DROPFILES message.</summary>
/// <returns>
/// <para>Return a nonzero value to allow the drop operation. Return zero to ignore the drop operation.</para>
/// </returns>
/// <remarks>
/// <para>For a rich edit control to receive [**WM\_DROPFILES**](/windows/desktop/shell/wm-dropfiles) messages, the parent window must register the control as a drop target by using the [**DragAcceptFiles**](/windows/desktop/api/shellapi/nf-shellapi-dragacceptfiles) function. The control does not register itself. To receive EN\_DROPFILES notification codes, specify [**ENM\_DROPFILES**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-dropfiles#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_DROPFILES = 1795U;
/// <summary>Notifies a rich edit control's parent window that the user is taking an action that would change a protected range of text. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>Return zero to allow the operation. Return a nonzero value to prevent the operation.</para>
/// </returns>
/// <remarks>
/// <para>If zero is returned and the **msg**, **wParam**, and **lParam** members of the [**ENPROTECTED**](/windows/desktop/api/Richedit/ns-richedit-enprotected) structure are changed, the control processes the revised message instead of the original message. To receive EN\_PROTECTED notification codes, specify [**ENM\_PROTECTED**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-protected#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_PROTECTED = 1796U;
/// <summary>Notifies a rich edit control parent window that a SYV\_CORRECT gesture occurred, giving the parent window a chance to cancel correcting the text. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>Return zero to ignore the action. Returns a nonzero value to process the action.</para>
/// </returns>
/// <remarks>
/// <para>This notification code is sent only if pen capabilities are available. To receive EN\_CORRECTTEXT notification codes, specify [**ENM\_CORRECTTEXT**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. > [!Note] > The EN\_CORRECTTEXT notification code is only supported in rich edit version 1.0. It is not supported in later versions of rich edit. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-correcttext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_CORRECTTEXT = 1797U;
/// <summary>Notifies a rich edit control's parent window that an action occurred for which the control cannot allocate enough memory to maintain the undo state. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>Return zero to continue the **Undo** operation. Return a nonzero value to stop the **Undo** operation.</para>
/// </returns>
/// <remarks>The parent window will always get a [**WM\_NOTIFY**](wm-notify.md) message for this event, it does not require a notification mask sent with [**EM\_SETEVENTMASK**](em-seteventmask.md).</remarks>
internal const uint EN_STOPNOUNDO = 1798U;
/// <summary>Notifies a rich edit control's parent that the IME conversion status has changed.</summary>
/// <returns>This notification code returns zero.</returns>
/// <remarks>
/// <para>To receive EN\_IMECHANGE notification codes, specify [**ENM\_IMECHANGE**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. > [!Note] > This notification code is only supported in the Asian version of Rich Edit 1.0. It is not supported in later versions. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-imechange#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_IMECHANGE = 1799U;
/// <summary>Notifies the rich edit control's parent window that the control is closing and the clipboard contains information. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>Return zero if the clipboard should be made available to other applications. Return a nonzero value if the clipboard should not be saved.</para>
/// </returns>
/// <remarks>The parent window will always get a [**WM\_NOTIFY**](wm-notify.md) message for this event, it does not require a notification mask sent with [**EM\_SETEVENTMASK**](em-seteventmask.md).</remarks>
internal const uint EN_SAVECLIPBOARD = 1800U;
/// <summary>Notifies a rich edit control's parent window that a user action on a Component Object Model (COM) object has failed. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>This notification code returns zero.</returns>
/// <remarks>The parent window will always get a [**WM\_NOTIFY**](wm-notify.md) message for this event, it does not require a notification mask sent with [**EM\_SETEVENTMASK**](em-seteventmask.md).</remarks>
internal const uint EN_OLEOPFAILED = 1801U;
/// <summary>Notifies a rich edit control's parent window when the control reads in objects. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>Return zero to continue the **Read** operation. Return a nonzero value to stop the **Read** operation.</para>
/// </returns>
/// <remarks>To receive an EN\_OBJECTPOSITIONS notification code, specify the [**ENM\_OBJECTPOSITIONS**](rich-edit-control-event-mask-flags.md) flag in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</remarks>
internal const uint EN_OBJECTPOSITIONS = 1802U;
/// <summary>A rich edit control sends EN\_LINK notification codes when it receives various messages, for example, when the user clicks the mouse or when the mouse pointer is over text that has the CFE\_LINK effect.</summary>
/// <returns>
/// <para>Return zero to allow the control to proceed with its normal handling of the message. Return a nonzero value to prevent the control from handling the message. **Windows 8**: Return **EN\_LINK\_DO\_DEFAULT** to direct the rich edit control to perform the default action.</para>
/// </returns>
/// <remarks>
/// <para>To receive **EN\_LINK** notification codes when the link has focus, specify the [**ENM\_LINK**](rich-edit-control-event-mask-flags.md) flag in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. If the link has no focus, to receive **EN\_LINK** notification codes specify the **SES\_NOFOCUSLINKNOTIFY** flag in the mask sent with the [**EM\_SETEDITSTYLE**](em-seteditstyle.md) message. A rich edit control sends **EN\_LINK** notification codes when it receives the following messages while the mouse pointer is over text that has the **CFE\_LINK** effect: - [**WM\_LBUTTONDBLCLK**](/windows/desktop/inputdev/wm-lbuttondblclk) - [**WM\_LBUTTONDOWN**](/windows/desktop/inputdev/wm-lbuttondown) - [**WM\_LBUTTONUP**](/windows/desktop/inputdev/wm-lbuttonup) - [**WM\_MOUSEMOVE**](/windows/desktop/inputdev/wm-mousemove) - [**WM\_RBUTTONDBLCLK**](/windows/desktop/inputdev/wm-rbuttondblclk) - [**WM\_RBUTTONDOWN**](/windows/desktop/inputdev/wm-rbuttondown) - [**WM\_RBUTTONUP**](/windows/desktop/inputdev/wm-rbuttonup) - [**WM\_SETCURSOR**](/windows/desktop/menurc/wm-setcursor) The **CFE\_LINK** effect typically identifies a range of text that contains an URL. Applications can handle the EN\_LINK notification code by changing the mouse pointer when it is over the URL, or by starting a browser to view the location identified by the URL. If you send the [**EM\_AUTOURLDETECT**](em-autourldetect.md) message to enable automatic URL detection, the rich edit control automatically sets the **CFE\_LINK** effect for modified text that it identifies as a URL.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-link#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_LINK = 1803U;
/// <summary>Notifies a rich edit control's parent window that the drag-and-drop operation has completed. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>This notification code does not return a value.</returns>
/// <remarks>To receive an EN\_DRAGDROPDONE notification code, specify the [**ENM\_DRAGDROPDONE**](rich-edit-control-event-mask-flags.md) flag in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</remarks>
internal const uint EN_DRAGDROPDONE = 1804U;
/// <summary>Notifies a rich edit control's parent that an outline has been expanded. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-paragraphexpanded">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_PARAGRAPHEXPANDED = 1805U;
internal const uint EN_PAGECHANGE = 1806U;
/// <summary>Notifies the parent window of a Microsoft Rich Edit control that an unsupported Rich Text Format (RTF) keyword was received. A Rich Edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>This notification code does not return a value.</returns>
/// <remarks>To receive an EN\_LOWFIRTF notification, specify the ENM\_LOWFIRTF flag in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</remarks>
internal const uint EN_LOWFIRTF = 1807U;
/// <summary>Notifies a rich edit control's parent window that the paragraph direction has changed to left-to-right. A rich edit control sends this notification code in the form of a WM\_COMMAND message.</summary>
/// <returns>This notification code does not return a value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-alignltr">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_ALIGNLTR = 1808U;
/// <summary>Notifies a rich edit control's parent window that the paragraph direction changed to right-to-left. A rich edit control sends this notification code in the form of a WM\_COMMAND message.</summary>
/// <returns>This notification code does not return a value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-alignrtl">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_ALIGNRTL = 1809U;
/// <summary>Notifies a rich edit control's parent window that a paste occurred with a particular clipboard format. A windowless rich edit control sends this notification by using the ITextHost TxNotify method.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>To receive EN\_CLIPFORMAT notification codes, specify [**ENM\_CLIPFORMAT**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</remarks>
internal const uint EN_CLIPFORMAT = 1810U;
/// <summary>Notifies a rich edit control parent window that the user started typing with IME or Text Services Framework.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-startcomposition">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_STARTCOMPOSITION = 1811U;
/// <summary>Notifies a rich edit control parent window that the user has entered new data or has finished entering data while using IME or Text Services Framework.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-endcomposition">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_ENDCOMPOSITION = 1812U;
/// <summary>Sent when an edit control receives the keyboard focus. The parent window of the edit control receives this notification code through a WM\_COMMAND message.</summary>
/// <remarks>
/// <para>The parent window always receives a [**WM\_COMMAND**](/windows/desktop/menurc/wm-command) message for this event, it does not require a notification mask sent with [**EM\_SETEVENTMASK**](em-seteventmask.md). **Rich Edit:** Supported in Microsoft Rich Edit 1.0 and later. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-setfocus#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_SETFOCUS = 256U;
/// <summary>Sent when an edit control loses the keyboard focus. The parent window of the edit control receives this notification code through a WM\_COMMAND message.</summary>
/// <remarks>
/// <para>The parent window always receives a [**WM\_COMMAND**](/windows/desktop/menurc/wm-command) message for this event, it does not require a notification mask sent with [**EM\_SETEVENTMASK**](em-seteventmask.md). **Rich Edit:** Supported in Microsoft Rich Edit 1.0 and later. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-killfocus#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_KILLFOCUS = 512U;
/// <summary>Notifies a windowless rich edit control's host window that a change has occurred. A rich edit control sends this notification code in the form of a WM\_NOTIFY message.</summary>
/// <returns>This notification code does not return a value.</returns>
/// <remarks>To receive EN\_CHANGE notification codes, specify [**ENM\_CHANGE**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message.</remarks>
internal const uint EN_CHANGE = 768U;
/// <summary>Sent when an edit control is about to redraw itself.</summary>
/// <remarks>
/// <para>**Rich Edit 1.0:** To receive EN\_UPDATE notification codes, specify [**ENM\_UPDATE**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. **Rich Edit 2.0 and later:** The [**ENM\_UPDATE**](rich-edit-control-event-mask-flags.md) flag is ignored. The EN\_UPDATE notification code is always received. However, when Microsoft Rich Edit 3.0 emulates Microsoft Rich Edit 1.0, to receive EN\_UPDATE notification codes you must specify **ENM\_UPDATE** in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-update#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_UPDATE = 1024U;
/// <summary>Sent when an edit control cannot allocate enough memory to meet a specific request. The parent window of the edit control receives this notification code through a WM\_COMMAND message.</summary>
/// <remarks>
/// <para>The parent window will always get a [**WM\_COMMAND**](/windows/desktop/menurc/wm-command) message for this event; it does not require a notification mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. **Rich Edit:** Supported in Microsoft Rich Edit 1.0 and later. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-errspace#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_ERRSPACE = 1280U;
/// <summary>Sent when the current text insertion has exceeded the specified number of characters for the edit control.</summary>
/// <remarks>
/// <para>The parent window always receives a [**WM\_COMMAND**](/windows/desktop/menurc/wm-command) message for this event, it does not require a notification mask sent with [**EM\_SETEVENTMASK**](em-seteventmask.md). **Rich Edit:** Supported in Microsoft Rich Edit 1.0 and later. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-maxtext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_MAXTEXT = 1281U;
/// <summary>Sent when the user clicks an edit control's horizontal scroll bar. The parent window of the edit control receives this notification code through a WM\_COMMAND message. The parent window is notified before the screen is updated.</summary>
/// <remarks>
/// <para>This notification code is sent for the following mouse events on the horizontal scroll bar: clicking either arrow button or clicking between the arrow button and the thumb. However, the notification code is not sent when clicking the scroll bar thumb itself. The notification code is also sent when a keyboard event causes a change in the view area of the edit control, for example, pressing HOME, END, LEFT ARROW, or RIGHT ARROW. **Rich Edit:** Supported in Microsoft Rich Edit 1.0 and later. To receive **EN\_HSCROLL** notification codes, specify [**ENM\_SCROLL**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-hscroll#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_HSCROLL = 1537U;
/// <summary>Sent when the user clicks an edit control's vertical scroll bar or when the user scrolls the mouse wheel over the edit control.</summary>
/// <remarks>
/// <para>This message is sent for the following mouse events on the vertical scroll bar: clicking either arrow button or clicking between the arrow button and the thumb. However, the message is not sent when clicking the scroll bar mouse itself. The message is also sent when a keyboard event causes a change in the view area of the edit control, for example, pressing HOME, END, PAGE UP, PAGE DOWN, UP ARROW, or DOWN ARROW. The mouse wheel is a mouse that has a center wheel that scrolls. For more information, see "The Mouse Wheel" in [About Mouse Input](/windows/desktop/inputdev/about-mouse-input). **Rich Edit:** Supported in Microsoft Rich Edit 1.0 and later. To receive EN\_VSCROLL notification codes, specify [**ENM\_SCROLL**](rich-edit-control-event-mask-flags.md) in the mask sent with the [**EM\_SETEVENTMASK**](em-seteventmask.md) message. For information about the compatibility of rich edit versions with the various system versions, see [About Rich Edit Controls](about-rich-edit-controls.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-vscroll#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_VSCROLL = 1538U;
/// <summary>Sent when the user has changed the edit control direction to left-to-right. The parent window of the edit control receives this notification code through a WM\_COMMAND message.</summary>
/// <remarks>
/// <para>If there is a bidirectional language installed on your system, for example, Arabic or Hebrew, you can change the edit control direction using CTRL+LSHIFT (for left to right) and CTRL+RSHIFT (for right to left). **Rich Edit:** This notification code is not supported.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-align-ltr-ec#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_ALIGN_LTR_EC = 1792U;
/// <summary>Sent when the user has changed the edit control direction to right-to-left. The parent window of the edit control receives this notification code through a WM\_COMMAND message.</summary>
/// <remarks>
/// <para>If there is a bidirectional language installed on your system, for example, Arabic or Hebrew, you can change the edit control direction using CTRL+LSHIFT (for left to right) and CTRL+RSHIFT (for right to left). **Rich Edit:** This notification code is not supported.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/en-align-rtl-ec#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint EN_ALIGN_RTL_EC = 1793U;
internal const uint EN_BEFORE_PASTE = 2048U;
internal const uint EN_AFTER_PASTE = 2049U;
internal const uint ENM_NONE = 0U;
internal const uint ENM_CHANGE = 1U;
internal const uint ENM_UPDATE = 2U;
internal const uint ENM_SCROLL = 4U;
internal const uint ENM_SCROLLEVENTS = 8U;
internal const uint ENM_DRAGDROPDONE = 16U;
internal const uint ENM_PARAGRAPHEXPANDED = 32U;
internal const uint ENM_PAGECHANGE = 64U;
internal const uint ENM_CLIPFORMAT = 128U;
internal const uint ENM_KEYEVENTS = 65536U;
internal const uint ENM_MOUSEEVENTS = 131072U;
internal const uint ENM_REQUESTRESIZE = 262144U;
internal const uint ENM_SELCHANGE = 524288U;
internal const uint ENM_DROPFILES = 1048576U;
internal const uint ENM_PROTECTED = 2097152U;
internal const uint ENM_CORRECTTEXT = 4194304U;
internal const uint ENM_IMECHANGE = 8388608U;
internal const uint ENM_LANGCHANGE = 16777216U;
internal const uint ENM_OBJECTPOSITIONS = 33554432U;
internal const uint ENM_LINK = 67108864U;
internal const uint ENM_LOWFIRTF = 134217728U;
internal const uint ENM_STARTCOMPOSITION = 268435456U;
internal const uint ENM_ENDCOMPOSITION = 536870912U;
internal const uint ENM_GROUPTYPINGCHANGE = 1073741824U;
internal const uint ENM_HIDELINKTOOLTIP = 2147483648U;
internal const uint ES_RESERVED_COM_ERROR_START = 0U;
internal const uint ES_RESERVED_COM_ERROR_END = 511U;
internal const uint ES_GENERAL_ERROR_START = 512U;
internal const uint ES_GENERAL_ERROR_END = 1023U;
internal const uint ES_AUTHN_ERROR_START = 1024U;
internal const uint ES_AUTHN_ERROR_END = 1279U;
internal const uint ES_RESERVED_SILO_ERROR_START = 1280U;
internal const uint ES_RESERVED_SILO_ERROR_END = 4095U;
internal const uint ES_PW_SILO_ERROR_START = 4352U;
internal const uint ES_PW_SILO_ERROR_END = 4607U;
internal const uint ES_RESERVED_SILO_SPECIFIC_ERROR_START = 4608U;
internal const uint ES_RESERVED_SILO_SPECIFIC_ERROR_END = 49151U;
internal const uint ES_VENDOR_ERROR_START = 49152U;
internal const uint ES_VENDOR_ERROR_END = 65535U;
internal const uint ES_E_INVALID_RESPONSE = 3221488128U;
internal const uint ES_E_UNPROVISIONED_HARDWARE = 3221488132U;
internal const uint ES_E_UNSUPPORTED_HARDWARE = 3221488133U;
internal const uint ES_E_INCOMPLETE_COMMAND = 3221488134U;
internal const uint ES_E_BAD_SEQUENCE = 3221488135U;
internal const uint ES_E_NO_PROBE = 3221488136U;
internal const uint ES_E_INVALID_SILO = 3221488137U;
internal const uint ES_E_INVALID_CAPABILITY = 3221488138U;
internal const uint ES_E_GROUP_POLICY_FORBIDDEN_USE = 3221488139U;
internal const uint ES_E_GROUP_POLICY_FORBIDDEN_OPERATION = 3221488140U;
internal const uint ES_E_INVALID_PARAM_COMBINATION = 3221488141U;
internal const uint ES_E_INVALID_PARAM_LENGTH = 3221488142U;
internal const uint ES_E_INCONSISTENT_PARAM_LENGTH = 3221488143U;
internal const uint ES_E_NO_AUTHENTICATION_REQUIRED = 3221488640U;
internal const uint ES_E_INVALID_FIELD_IDENTIFIER = 3221491968U;
internal const uint ES_E_CHALLENGE_MISMATCH = 3221491969U;
internal const uint ES_E_CHALLENGE_SIZE_MISMATCH = 3221491970U;
internal const uint ES_E_FRIENDLY_NAME_TOO_LONG = 3221491971U;
internal const uint ES_E_SILO_NAME_TOO_LONG = 3221491972U;
internal const uint ES_E_PASSWORD_TOO_LONG = 3221491973U;
internal const uint ES_E_PASSWORD_HINT_TOO_LONG = 3221491974U;
internal const uint ES_E_OTHER_SECURITY_PROTOCOL_ACTIVE = 3221491975U;
internal const uint ES_E_DEVICE_DIGEST_MISSING = 3221491976U;
internal const uint ES_E_NOT_AUTHORIZED_UNEXPECTED = 3221491977U;
internal const uint ES_E_AUTHORIZED_UNEXPECTED = 3221491978U;
internal const uint ES_E_PROVISIONED_UNEXPECTED = 3221491979U;
internal const uint ES_E_UNKNOWN_DIGEST_ALGORITHM = 3221491980U;
internal const int ES_EX_ALLOWEOL_CR = 1;
internal const int ES_EX_ALLOWEOL_LF = 2;
internal const int ES_EX_CONVERT_EOL_ON_PASTE = 4;
internal const int ES_EX_ZOOMABLE = 16;
internal const uint ES_SAVESEL = 32768U;
internal const uint ES_SUNKEN = 16384U;
internal const uint ES_DISABLENOSCROLL = 8192U;
internal const uint ES_SELECTIONBAR = 16777216U;
internal const uint ES_NOOLEDRAGDROP = 8U;
internal const uint ES_EX_NOCALLOLEINIT = 0U;
internal const uint ES_VERTICAL = 4194304U;
internal const uint ES_NOIME = 524288U;
internal const uint ES_SELFIME = 262144U;
internal const int ES_LEFT = 0;
internal const int ES_CENTER = 1;
internal const int ES_RIGHT = 2;
internal const int ES_MULTILINE = 4;
internal const int ES_UPPERCASE = 8;
internal const int ES_LOWERCASE = 16;
internal const int ES_PASSWORD = 32;
internal const int ES_AUTOVSCROLL = 64;
internal const int ES_AUTOHSCROLL = 128;
internal const int ES_NOHIDESEL = 256;
internal const int ES_OEMCONVERT = 1024;
internal const int ES_READONLY = 2048;
internal const int ES_WANTRETURN = 4096;
internal const int ES_NUMBER = 8192;
internal const int GDI_ERROR = -1;
internal const uint GDTR_MIN = 1U;
internal const uint GDTR_MAX = 2U;
internal const uint GET_MODULE_HANDLE_EX_FLAG_PIN = 1U;
internal const uint GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2U;
internal const uint GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4U;
internal const uint GMR_VISIBLE = 0U;
internal const uint GMR_DAYSTATE = 1U;
internal const uint HC_ACTION = 0U;
internal const uint HC_GETNEXT = 1U;
internal const uint HC_SKIP = 2U;
internal const uint HC_NOREMOVE = 3U;
internal const uint HC_NOREM = 3U;
internal const uint HC_SYSMODALON = 4U;
internal const uint HC_SYSMODALOFF = 5U;
internal const uint HDM_FIRST = 4608U;
/// <summary>Gets a count of the items in a header control. You can send this message explicitly or use the Header\_GetItemCount macro.</summary>
/// <returns>Returns the number of items if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-getitemcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_GETITEMCOUNT = 4608U;
/// <summary>Inserts a new item into a header control. You can send this message explicitly or use the Header\_InsertItem macro.</summary>
/// <returns>Returns the index of the new item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_INSERTITEMA = 4609U;
/// <summary>Inserts a new item into a header control. You can send this message explicitly or use the Header\_InsertItem macro.</summary>
/// <returns>Returns the index of the new item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_INSERTITEMW = 4618U;
/// <summary>Inserts a new item into a header control. You can send this message explicitly or use the Header\_InsertItem macro.</summary>
/// <returns>Returns the index of the new item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_INSERTITEM = 4618U;
/// <summary>Deletes an item from a header control. You can send this message explicitly or use the Header\_DeleteItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-deleteitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_DELETEITEM = 4610U;
/// <summary>Gets information about an item in a header control. You can send this message explicitly or use the Header\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the HDI\_TEXT flag is set in the **mask** member of the [**HDITEM**](/windows/win32/api/commctrl/ns-commctrl-hditema) structure, the control may change the **pszText** member of the structure to point to the new text instead of filling the buffer with the requested text. Applications should not assume that the text will always be placed in the requested buffer.</remarks>
internal const uint HDM_GETITEMA = 4611U;
/// <summary>Gets information about an item in a header control. You can send this message explicitly or use the Header\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the HDI\_TEXT flag is set in the **mask** member of the [**HDITEM**](/windows/win32/api/commctrl/ns-commctrl-hditema) structure, the control may change the **pszText** member of the structure to point to the new text instead of filling the buffer with the requested text. Applications should not assume that the text will always be placed in the requested buffer.</remarks>
internal const uint HDM_GETITEMW = 4619U;
/// <summary>Gets information about an item in a header control. You can send this message explicitly or use the Header\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the HDI\_TEXT flag is set in the **mask** member of the [**HDITEM**](/windows/win32/api/commctrl/ns-commctrl-hditema) structure, the control may change the **pszText** member of the structure to point to the new text instead of filling the buffer with the requested text. Applications should not assume that the text will always be placed in the requested buffer.</remarks>
internal const uint HDM_GETITEM = 4619U;
/// <summary>Sets the attributes of the specified item in a header control. You can send this message explicitly or use the Header\_SetItem macro.</summary>
/// <returns>Returns nonzero upon success, or zero otherwise.</returns>
/// <remarks>The [**HDITEM**](/windows/win32/api/commctrl/ns-commctrl-hditema) structure that supports this message supports item order and image list information. By using these members, you can control the order in which items are displayed and specify images to appear with items.</remarks>
internal const uint HDM_SETITEMA = 4612U;
/// <summary>Sets the attributes of the specified item in a header control. You can send this message explicitly or use the Header\_SetItem macro.</summary>
/// <returns>Returns nonzero upon success, or zero otherwise.</returns>
/// <remarks>The [**HDITEM**](/windows/win32/api/commctrl/ns-commctrl-hditema) structure that supports this message supports item order and image list information. By using these members, you can control the order in which items are displayed and specify images to appear with items.</remarks>
internal const uint HDM_SETITEMW = 4620U;
/// <summary>Sets the attributes of the specified item in a header control. You can send this message explicitly or use the Header\_SetItem macro.</summary>
/// <returns>Returns nonzero upon success, or zero otherwise.</returns>
/// <remarks>The [**HDITEM**](/windows/win32/api/commctrl/ns-commctrl-hditema) structure that supports this message supports item order and image list information. By using these members, you can control the order in which items are displayed and specify images to appear with items.</remarks>
internal const uint HDM_SETITEM = 4620U;
/// <summary>Retrieves information used to set the size and position of the header control within the target rectangle of the parent window. You can send this message explicitly or use the Header\_Layout macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>The **pwpos** member of the *lParam* structure receives size and position values appropriate for positioning the control along the top of the specified rectangle. The height value is the sum of the heights of the control's horizontal borders and the average height of characters in the font currently selected into the control's device context. To use **HDM\_LAYOUT** to set the initial size and position of a header control, set the initial visibility state of the control so that it is hidden. After sending **HDM\_LAYOUT** to retrieve the size and position values, use the [**SetWindowPos**](/windows/desktop/api/winuser/nf-winuser-setwindowpos) function to set the new size, position, and visibility state.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-layout#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_LAYOUT = 4613U;
/// <summary>Tests a point to determine which header item, if any, is at the specified point.</summary>
/// <returns>Returns the index of the item at the specified position, if any, or 1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-hittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_HITTEST = 4614U;
/// <summary>Gets the bounding rectangle for a given item in a header control. You can send this message explicitly or use the Header\_GetItemRect macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-getitemrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_GETITEMRECT = 4615U;
/// <summary>Assigns an image list to an existing header control. You can send this message explicitly or use the Header\_SetImageList or Header\_SetStateImageList macro.</summary>
/// <returns>Returns the handle to the image list previously associated with the control. Returns **NULL** upon failure or if no image list was set previously.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-setimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_SETIMAGELIST = 4616U;
/// <summary>Gets the handle to the image list that has been set for an existing header control. You can send this message explicitly or use the Header\_GetImageList or Header\_GetStateImageList macro.</summary>
/// <returns>Returns a handle to the image list set for the header control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_GETIMAGELIST = 4617U;
/// <summary>Retrieves an index value for an item based on its order in the header control. You can send this message explicitly or use the Header\_OrderToIndex macro.</summary>
/// <returns>Returns INT that indicates the item index. If *wParam* is invalid (negative or too large), the return equals *wParam*.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-ordertoindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_ORDERTOINDEX = 4623U;
/// <summary>Creates a semi-transparent version of an item's image for use as a dragging image. You can send this message explicitly or use the Header\_CreateDragImage macro.</summary>
/// <returns>Returns a handle to an image list that contains the new image as its only element.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-createdragimage">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_CREATEDRAGIMAGE = 4624U;
/// <summary>Gets the current left-to-right order of items in a header control. You can send this message explicitly or use the Header\_GetOrderArray macro.</summary>
/// <returns>Returns nonzero if successful, and the buffer at *lParam* receives the item number for each item in the header control in the order in which they appear from left to right. Otherwise, the message returns zero.</returns>
/// <remarks>
/// <para>The number of elements in *lParam* is specified in *wParam* and must be equal to the number of items in the control. For example, the following code fragment will reserve enough memory to hold the index values.</para>
/// <para></para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-getorderarray#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_GETORDERARRAY = 4625U;
/// <summary>Sets the left-to-right order of header items. You can send this message explicitly or use the Header\_SetOrderArray macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-setorderarray">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_SETORDERARRAY = 4626U;
/// <summary>Changes the color of a divider between header items to indicate the destination of an external drag-and-drop operation. You can send this message explicitly or use the Header\_SetHotDivider macro.</summary>
/// <returns>Returns a value equal to the index of the divider that the control highlighted.</returns>
/// <remarks>This message creates an effect that a header control automatically produces when it has the [**HDS\_DRAGDROP**](header-control-styles.md) style. The **HDM\_SETHOTDIVIDER** message is intended to be used when the owner of the control handles drag-and-drop operations manually.</remarks>
internal const uint HDM_SETHOTDIVIDER = 4627U;
/// <summary>Sets the width of the margin, specified in pixels, of a bitmap in an existing header control. You can send this message explicitly or use the Header\_SetBitmapMargin macro.</summary>
/// <returns>Returns the width of the bitmap margin, in pixels. If the bitmap margin was not previously specified, the default value of 3\* [**GetSystemMetrics**](/windows/desktop/api/winuser/nf-winuser-getsystemmetrics) (*SM\_CXEDGE*) is returned.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-setbitmapmargin">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_SETBITMAPMARGIN = 4628U;
/// <summary>Gets the width of the bitmap margin for a header control. You can send this message explicitly or use the Header\_GetBitmapMargin macro.</summary>
/// <returns>Returns the width of the bitmap margin in pixels. If the bitmap margin was not previously specified, the default value of 3\* [**GetSystemMetrics**](/windows/desktop/api/winuser/nf-winuser-getsystemmetrics) (SM\_CXEDGE) is returned.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-getbitmapmargin">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_GETBITMAPMARGIN = 4629U;
/// <summary>HDM_SETUNICODEFORMAT message - Sets the UNICODE character format flag for the control.</summary>
/// <returns>Returns the previous Unicode format flag for the control.</returns>
/// <remarks>See the remarks for [**CCM\_SETUNICODEFORMAT**](ccm-setunicodeformat.md) for a discussion of this message.</remarks>
internal const uint HDM_SETUNICODEFORMAT = 8197U;
/// <summary>Gets the Unicode character format flag for the control. You can send this message explicitly or use the Header\_GetUnicodeFormat macro.</summary>
/// <returns>Returns the Unicode format flag for the control. If this value is nonzero, the control is using Unicode characters. If this value is zero, the control is using ANSI characters.</returns>
/// <remarks>See the remarks for [**CCM\_GETUNICODEFORMAT**](ccm-getunicodeformat.md) for a discussion of this message.</remarks>
internal const uint HDM_GETUNICODEFORMAT = 8198U;
/// <summary>Sets the timeout interval between the time a change takes place in the filter attributes and the posting of an HDN\_FILTERCHANGE notification. You can send this message explicitly or use the Header\_SetFilterChangeTimeout macro.</summary>
/// <returns>Returns the index of the filter control being modified.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-setfilterchangetimeout">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_SETFILTERCHANGETIMEOUT = 4630U;
/// <summary>Moves the input focus to the edit box when a filter button has the focus.</summary>
/// <returns>Returns an integer. The **LRESULT** is cast to an integer that indicates **TRUE**(1) or **FALSE**(0).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-editfilter">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_EDITFILTER = 4631U;
/// <summary>Clears the filter for a given header control. You can send this message explicitly or use the Header\_ClearFilter macro.</summary>
/// <returns>Returns an integer. The **LRESULT** is cast to an integer that indicates **TRUE**(1) or **FALSE**(0).</returns>
/// <remarks>If the column value is specified as -1, all the filters are cleared, and the [HDN\_FILTERCHANGE](hdn-filterchange.md) notification is sent only once.</remarks>
internal const uint HDM_CLEARFILTER = 4632U;
/// <summary>Gets the bounding rectangle of the split button for a header item with style HDF\_SPLITBUTTON. Send this message explicitly or by using the Header\_GetItemDropDownRect macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>The header item must have style **HDF\_SPLITBUTTON**.</remarks>
internal const uint HDM_GETITEMDROPDOWNRECT = 4633U;
/// <summary>Gets the bounding rectangle of the overflow button when the HDS\_OVERFLOW style is set on the header control and the overflow button is visible. Send this message explicitly or by using the Header\_GetOverflowRect macro.</summary>
/// <returns>Returns **TRUE** if successful; otherwise, **FALSE**.</returns>
/// <remarks>The header control must have style **HDF\_SPLITBUTTON**.</remarks>
internal const uint HDM_GETOVERFLOWRECT = 4634U;
/// <summary>Gets the item in a header control that has the focus. Send this message explicitly or by using the Header\_GetFocusedItem macro.</summary>
/// <returns>Returns the index of the item in focus.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-getfocuseditem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_GETFOCUSEDITEM = 4635U;
/// <summary>Sets the focus to a specified item in a header control. Send this message explicitly or by using the Header\_SetFocusedItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdm-setfocuseditem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDM_SETFOCUSEDITEM = 4636U;
internal const uint HDN_FIRST = 4294966996U;
internal const uint HDN_LAST = 4294966897U;
/// <summary>Notifies a header control's parent window that the attributes of a header item are about to change. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to allow the changes, or **TRUE** to prevent them.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemchanging">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMCHANGINGA = 4294966996U;
/// <summary>Notifies a header control's parent window that the attributes of a header item are about to change. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to allow the changes, or **TRUE** to prevent them.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemchanging">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMCHANGINGW = 4294966976U;
/// <summary>Notifies a header control's parent window that the attributes of a header item have changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMCHANGEDA = 4294966995U;
/// <summary>Notifies a header control's parent window that the attributes of a header item have changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMCHANGEDW = 4294966975U;
/// <summary>Notifies a header control's parent window that the user clicked the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>A header control sends this notification code after the user releases the left mouse button.</remarks>
internal const uint HDN_ITEMCLICKA = 4294966994U;
/// <summary>Notifies a header control's parent window that the user clicked the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>A header control sends this notification code after the user releases the left mouse button.</remarks>
internal const uint HDN_ITEMCLICKW = 4294966974U;
/// <summary>Notifies a header control's parent window that the user double-clicked the control. This notification code is sent in the form of a WM\_NOTIFY message. Only header controls that are set to the HDS\_BUTTONS style send this notification code.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemdblclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMDBLCLICKA = 4294966993U;
/// <summary>Notifies a header control's parent window that the user double-clicked the control. This notification code is sent in the form of a WM\_NOTIFY message. Only header controls that are set to the HDS\_BUTTONS style send this notification code.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemdblclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMDBLCLICKW = 4294966973U;
/// <summary>Notifies a header control's parent window that the user double-clicked the divider area of the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-dividerdblclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_DIVIDERDBLCLICKA = 4294966991U;
/// <summary>Notifies a header control's parent window that the user double-clicked the divider area of the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-dividerdblclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_DIVIDERDBLCLICKW = 4294966971U;
/// <summary>Notifies a header control's parent window that the user has begun dragging a divider in the control (that is, the user has pressed the left mouse button while the mouse cursor is on a divider in the header control).</summary>
/// <returns>Returns **FALSE** to allow tracking of the divider, or **TRUE** to prevent tracking.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-begintrack">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_BEGINTRACKA = 4294966990U;
/// <summary>Notifies a header control's parent window that the user has begun dragging a divider in the control (that is, the user has pressed the left mouse button while the mouse cursor is on a divider in the header control).</summary>
/// <returns>Returns **FALSE** to allow tracking of the divider, or **TRUE** to prevent tracking.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-begintrack">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_BEGINTRACKW = 4294966970U;
/// <summary>Notifies a header control's parent window that the user has finished dragging a divider. This notification code sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-endtrack">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ENDTRACKA = 4294966989U;
/// <summary>Notifies a header control's parent window that the user has finished dragging a divider. This notification code sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-endtrack">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ENDTRACKW = 4294966969U;
/// <summary>Notifies a header control's parent window that the user is dragging a divider in the header control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to continue tracking the divider, or **TRUE** to end tracking.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-track">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_TRACKA = 4294966988U;
/// <summary>Notifies a header control's parent window that the user is dragging a divider in the header control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to continue tracking the divider, or **TRUE** to end tracking.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-track">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_TRACKW = 4294966968U;
/// <summary>Sent to the owner of a header control when the control needs information about a callback header item. This notification code is sent as a WM\_NOTIFY message.</summary>
/// <returns>Returns an LRESULT.</returns>
/// <remarks>Fill the appropriate members of the structure to return the requested information to the header control. If your message handler sets the **mask** member of the [**NMHDDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmhddispinfoa) structure to HDI\_DI\_SETITEM, the header control stores the information and will not request it again.</remarks>
internal const uint HDN_GETDISPINFOA = 4294966987U;
/// <summary>Sent to the owner of a header control when the control needs information about a callback header item. This notification code is sent as a WM\_NOTIFY message.</summary>
/// <returns>Returns an LRESULT.</returns>
/// <remarks>Fill the appropriate members of the structure to return the requested information to the header control. If your message handler sets the **mask** member of the [**NMHDDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmhddispinfoa) structure to HDI\_DI\_SETITEM, the header control stores the information and will not request it again.</remarks>
internal const uint HDN_GETDISPINFOW = 4294966967U;
/// <summary>Sent by a header control when a drag operation has begun on one of its items. This notification code is sent only by header controls that are set to the HDS\_DRAGDROP style. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>To allow the header control to automatically manage drag-and-drop operations, return **FALSE**. If the owner of the control is manually performing drag-and-drop reordering, return **TRUE**.</returns>
/// <remarks>A header control defaults to automatically managing drag-and-drop reordering. Returning **TRUE** to indicate external (manual) drag-and-drop management allows the owner of the control to provide custom services as part of the drag-and-drop process.</remarks>
internal const uint HDN_BEGINDRAG = 4294966986U;
/// <summary>Sent by a header control when a drag operation has ended on one of its items. This notification code is sent as a WM\_NOTIFY message. Only header controls that are set to the HDS\_DRAGDROP style send this notification code.</summary>
/// <returns>To allow the control to automatically place and reorder the item, return **FALSE**. To prevent the item from being placed, return **TRUE**.</returns>
/// <remarks>If the owner is performing external (manual) drag-and-drop management, it must return **FALSE**. The owner then must reorder header items manually by sending [**HDM\_SETITEM**](hdm-setitem.md) or [**HDM\_SETORDERARRAY**](hdm-setorderarray.md).</remarks>
internal const uint HDN_ENDDRAG = 4294966985U;
/// <summary>Notifies the header control's parent window that the attributes of a header control filter are being changed or edited. This notification code sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-filterchange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_FILTERCHANGE = 4294966984U;
/// <summary>Notifies the header control's parent window when the filter button is clicked or in response to an HDM\_SETITEM message. This notification code sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>If you return **TRUE**, an [HDN\_FILTERCHANGE](hdn-filterchange.md) notification code will be sent to the header control's parent window. This notification code gives the parent window an opportunity to synchronize its user interface elements. Return **FALSE** if you do not want the notification sent.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-filterbtnclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_FILTERBTNCLICK = 4294966983U;
/// <summary>Notifies a header control's parent window that a filter edit has begun. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-beginfilteredit">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_BEGINFILTEREDIT = 4294966982U;
/// <summary>Notifies a header control's parent window that a filter edit has ended. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-endfilteredit">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ENDFILTEREDIT = 4294966981U;
/// <summary>Notifies a header control's parent window that the user clicked an item's state icon. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemstateiconclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMSTATEICONCLICK = 4294966980U;
/// <summary>Notifies a header control's parent window that a key has been pressed with an item selected. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemkeydown">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMKEYDOWN = 4294966979U;
/// <summary>Sent by a header control to its parent when the drop-down arrow on the header control is clicked. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The example in the Syntax section shows how the notification receiver casts **LPARAM** to retrieve the [**NMHEADER**](/windows/win32/api/commctrl/ns-commctrl-nmheadera) structure. **WPARAM** contains the ID of the control that sends this message. This message is sent only if style HDF\_SPLITBUTTON is set on the header item.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-dropdown#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_DROPDOWN = 4294966978U;
/// <summary>Sent by a header control to its parent when the header's overflow button is clicked. This notification code is sent in the form of an WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts **LPARAM** to retrieve the [**NMHEADER**](/windows/win32/api/commctrl/ns-commctrl-nmheadera) structure. **WPARAM** contains the ID of the control that sends the notification. This message is sent only when style [**HDS\_OVERFLOW**](header-control-styles.md) is set on the header control.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-overflowclick#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_OVERFLOWCLICK = 4294966977U;
/// <summary>Notifies a header control's parent window that the attributes of a header item are about to change. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to allow the changes, or **TRUE** to prevent them.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemchanging">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMCHANGING = 4294966976U;
/// <summary>Notifies a header control's parent window that the attributes of a header item have changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMCHANGED = 4294966975U;
/// <summary>Notifies a header control's parent window that the user clicked the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>A header control sends this notification code after the user releases the left mouse button.</remarks>
internal const uint HDN_ITEMCLICK = 4294966974U;
/// <summary>Notifies a header control's parent window that the user double-clicked the control. This notification code is sent in the form of a WM\_NOTIFY message. Only header controls that are set to the HDS\_BUTTONS style send this notification code.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-itemdblclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ITEMDBLCLICK = 4294966973U;
/// <summary>Notifies a header control's parent window that the user double-clicked the divider area of the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-dividerdblclick">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_DIVIDERDBLCLICK = 4294966971U;
/// <summary>Notifies a header control's parent window that the user has begun dragging a divider in the control (that is, the user has pressed the left mouse button while the mouse cursor is on a divider in the header control).</summary>
/// <returns>Returns **FALSE** to allow tracking of the divider, or **TRUE** to prevent tracking.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-begintrack">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_BEGINTRACK = 4294966970U;
/// <summary>Notifies a header control's parent window that the user has finished dragging a divider. This notification code sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-endtrack">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_ENDTRACK = 4294966969U;
/// <summary>Notifies a header control's parent window that the user is dragging a divider in the header control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to continue tracking the divider, or **TRUE** to end tracking.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/hdn-track">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint HDN_TRACK = 4294966968U;
/// <summary>Sent to the owner of a header control when the control needs information about a callback header item. This notification code is sent as a WM\_NOTIFY message.</summary>
/// <returns>Returns an LRESULT.</returns>
/// <remarks>Fill the appropriate members of the structure to return the requested information to the header control. If your message handler sets the **mask** member of the [**NMHDDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmhddispinfoa) structure to HDI\_DI\_SETITEM, the header control stores the information and will not request it again.</remarks>
internal const uint HDN_GETDISPINFO = 4294966967U;
internal const uint HTTP_TRACE_EVENT_FLAG_STATIC_DESCRIPTIVE_FIELDS = 1U;
internal const uint HTTP_TRACE_LEVEL_START = 6U;
internal const uint HTTP_TRACE_LEVEL_END = 7U;
internal const int HTERROR = -2;
internal const int HTTRANSPARENT = -1;
internal const uint HTNOWHERE = 0U;
internal const uint HTCLIENT = 1U;
internal const uint HTCAPTION = 2U;
internal const uint HTSYSMENU = 3U;
internal const uint HTGROWBOX = 4U;
internal const uint HTSIZE = 4U;
internal const uint HTMENU = 5U;
internal const uint HTHSCROLL = 6U;
internal const uint HTVSCROLL = 7U;
internal const uint HTMINBUTTON = 8U;
internal const uint HTMAXBUTTON = 9U;
internal const uint HTLEFT = 10U;
internal const uint HTRIGHT = 11U;
internal const uint HTTOP = 12U;
internal const uint HTTOPLEFT = 13U;
internal const uint HTTOPRIGHT = 14U;
internal const uint HTBOTTOM = 15U;
internal const uint HTBOTTOMLEFT = 16U;
internal const uint HTBOTTOMRIGHT = 17U;
internal const uint HTBORDER = 18U;
internal const uint HTREDUCE = 8U;
internal const uint HTZOOM = 9U;
internal const uint HTSIZEFIRST = 10U;
internal const uint HTSIZELAST = 17U;
internal const uint HTOBJECT = 19U;
internal const uint HTCLOSE = 20U;
internal const uint HTHELP = 21U;
internal const uint HT_PATSIZE_2x2 = 0U;
internal const uint HT_PATSIZE_2x2_M = 1U;
internal const uint HT_PATSIZE_4x4 = 2U;
internal const uint HT_PATSIZE_4x4_M = 3U;
internal const uint HT_PATSIZE_6x6 = 4U;
internal const uint HT_PATSIZE_6x6_M = 5U;
internal const uint HT_PATSIZE_8x8 = 6U;
internal const uint HT_PATSIZE_8x8_M = 7U;
internal const uint HT_PATSIZE_10x10 = 8U;
internal const uint HT_PATSIZE_10x10_M = 9U;
internal const uint HT_PATSIZE_12x12 = 10U;
internal const uint HT_PATSIZE_12x12_M = 11U;
internal const uint HT_PATSIZE_14x14 = 12U;
internal const uint HT_PATSIZE_14x14_M = 13U;
internal const uint HT_PATSIZE_16x16 = 14U;
internal const uint HT_PATSIZE_16x16_M = 15U;
internal const uint HT_PATSIZE_SUPERCELL = 16U;
internal const uint HT_PATSIZE_SUPERCELL_M = 17U;
internal const uint HT_PATSIZE_USER = 18U;
internal const uint HT_PATSIZE_MAX_INDEX = 18U;
internal const uint HT_PATSIZE_DEFAULT = 17U;
internal const uint HT_USERPAT_CX_MIN = 4U;
internal const uint HT_USERPAT_CX_MAX = 256U;
internal const uint HT_USERPAT_CY_MIN = 4U;
internal const uint HT_USERPAT_CY_MAX = 256U;
internal const uint HT_FORMAT_1BPP = 0U;
internal const uint HT_FORMAT_4BPP = 2U;
internal const uint HT_FORMAT_4BPP_IRGB = 3U;
internal const uint HT_FORMAT_8BPP = 4U;
internal const uint HT_FORMAT_16BPP = 5U;
internal const uint HT_FORMAT_24BPP = 6U;
internal const uint HT_FORMAT_32BPP = 7U;
internal const uint HT_FLAG_SQUARE_DEVICE_PEL = 1U;
internal const uint HT_FLAG_HAS_BLACK_DYE = 2U;
internal const uint HT_FLAG_ADDITIVE_PRIMS = 4U;
internal const uint HT_FLAG_USE_8BPP_BITMASK = 8U;
internal const uint HT_FLAG_INK_HIGH_ABSORPTION = 16U;
internal const uint HT_FLAG_INK_ABSORPTION_INDICES = 96U;
internal const uint HT_FLAG_DO_DEVCLR_XFORM = 128U;
internal const uint HT_FLAG_OUTPUT_CMY = 256U;
internal const uint HT_FLAG_PRINT_DRAFT_MODE = 512U;
internal const uint HT_FLAG_INVERT_8BPP_BITMASK_IDX = 1024U;
internal const uint HT_FLAG_8BPP_CMY332_MASK = 4278190080U;
internal const uint HT_FLAG_INK_ABSORPTION_IDX0 = 0U;
internal const uint HT_FLAG_INK_ABSORPTION_IDX1 = 32U;
internal const uint HT_FLAG_INK_ABSORPTION_IDX2 = 64U;
internal const uint HT_FLAG_INK_ABSORPTION_IDX3 = 96U;
internal const uint HT_FLAG_NORMAL_INK_ABSORPTION = 0U;
internal const uint HT_FLAG_LOW_INK_ABSORPTION = 32U;
internal const uint HT_FLAG_LOWER_INK_ABSORPTION = 64U;
internal const uint HT_FLAG_LOWEST_INK_ABSORPTION = 96U;
internal const uint HTTP_PROTOCOL_UUID16 = 12U;
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_UNEXPECTED = (winmdroot.Foundation.HRESULT)(-2145845247);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_UNEXPECTED_REDIRECTION = (winmdroot.Foundation.HRESULT)(-2145845245);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR = (winmdroot.Foundation.HRESULT)(-2145845244);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR = (winmdroot.Foundation.HRESULT)(-2145845243);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_AMBIGUOUS = (winmdroot.Foundation.HRESULT)(-2145844948);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_MOVED = (winmdroot.Foundation.HRESULT)(-2145844947);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_REDIRECT = (winmdroot.Foundation.HRESULT)(-2145844946);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_REDIRECT_METHOD = (winmdroot.Foundation.HRESULT)(-2145844945);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_NOT_MODIFIED = (winmdroot.Foundation.HRESULT)(-2145844944);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_USE_PROXY = (winmdroot.Foundation.HRESULT)(-2145844943);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_REDIRECT_KEEP_VERB = (winmdroot.Foundation.HRESULT)(-2145844941);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_BAD_REQUEST = (winmdroot.Foundation.HRESULT)(-2145844848);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_DENIED = (winmdroot.Foundation.HRESULT)(-2145844847);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_PAYMENT_REQ = (winmdroot.Foundation.HRESULT)(-2145844846);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_FORBIDDEN = (winmdroot.Foundation.HRESULT)(-2145844845);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_NOT_FOUND = (winmdroot.Foundation.HRESULT)(-2145844844);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_BAD_METHOD = (winmdroot.Foundation.HRESULT)(-2145844843);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_NONE_ACCEPTABLE = (winmdroot.Foundation.HRESULT)(-2145844842);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_PROXY_AUTH_REQ = (winmdroot.Foundation.HRESULT)(-2145844841);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_REQUEST_TIMEOUT = (winmdroot.Foundation.HRESULT)(-2145844840);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_CONFLICT = (winmdroot.Foundation.HRESULT)(-2145844839);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_GONE = (winmdroot.Foundation.HRESULT)(-2145844838);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_LENGTH_REQUIRED = (winmdroot.Foundation.HRESULT)(-2145844837);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_PRECOND_FAILED = (winmdroot.Foundation.HRESULT)(-2145844836);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_REQUEST_TOO_LARGE = (winmdroot.Foundation.HRESULT)(-2145844835);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_URI_TOO_LONG = (winmdroot.Foundation.HRESULT)(-2145844834);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_UNSUPPORTED_MEDIA = (winmdroot.Foundation.HRESULT)(-2145844833);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_RANGE_NOT_SATISFIABLE = (winmdroot.Foundation.HRESULT)(-2145844832);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_EXPECTATION_FAILED = (winmdroot.Foundation.HRESULT)(-2145844831);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_SERVER_ERROR = (winmdroot.Foundation.HRESULT)(-2145844748);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_NOT_SUPPORTED = (winmdroot.Foundation.HRESULT)(-2145844747);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_BAD_GATEWAY = (winmdroot.Foundation.HRESULT)(-2145844746);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_SERVICE_UNAVAIL = (winmdroot.Foundation.HRESULT)(-2145844745);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_GATEWAY_TIMEOUT = (winmdroot.Foundation.HRESULT)(-2145844744);
internal static readonly winmdroot.Foundation.HRESULT HTTP_E_STATUS_VERSION_NOT_SUP = (winmdroot.Foundation.HRESULT)(-2145844743);
internal const uint HTMLDLG_NOUI = 16U;
internal const uint HTMLDLG_MODAL = 32U;
internal const uint HTMLDLG_MODELESS = 64U;
internal const uint HTMLDLG_PRINT_TEMPLATE = 128U;
internal const uint HTMLDLG_VERIFY = 256U;
internal const uint HTMLDLG_ALLOW_UNKNOWN_THREAD = 512U;
internal const uint HTTP_DEMAND_CBT = 4U;
internal const uint HTTP_MAX_SERVER_QUEUE_LENGTH = 2147483647U;
internal const uint HTTP_MIN_SERVER_QUEUE_LENGTH = 1U;
internal const uint HTTP_AUTH_ENABLE_BASIC = 1U;
internal const uint HTTP_AUTH_ENABLE_DIGEST = 2U;
internal const uint HTTP_AUTH_ENABLE_NTLM = 4U;
internal const uint HTTP_AUTH_ENABLE_NEGOTIATE = 8U;
internal const uint HTTP_AUTH_ENABLE_KERBEROS = 16U;
internal const uint HTTP_AUTH_EX_FLAG_ENABLE_KERBEROS_CREDENTIAL_CACHING = 1U;
internal const uint HTTP_AUTH_EX_FLAG_CAPTURE_CREDENTIAL = 2U;
internal const uint HTTP_CHANNEL_BIND_PROXY = 1U;
internal const uint HTTP_CHANNEL_BIND_PROXY_COHOSTING = 32U;
internal const uint HTTP_CHANNEL_BIND_NO_SERVICE_NAME_CHECK = 2U;
internal const uint HTTP_CHANNEL_BIND_DOTLESS_SERVICE = 4U;
internal const uint HTTP_CHANNEL_BIND_SECURE_CHANNEL_TOKEN = 8U;
internal const uint HTTP_CHANNEL_BIND_CLIENT_SERVICE = 16U;
internal const uint HTTP_LOG_FIELD_DATE = 1U;
internal const uint HTTP_LOG_FIELD_TIME = 2U;
internal const uint HTTP_LOG_FIELD_CLIENT_IP = 4U;
internal const uint HTTP_LOG_FIELD_USER_NAME = 8U;
internal const uint HTTP_LOG_FIELD_SITE_NAME = 16U;
internal const uint HTTP_LOG_FIELD_COMPUTER_NAME = 32U;
internal const uint HTTP_LOG_FIELD_SERVER_IP = 64U;
internal const uint HTTP_LOG_FIELD_METHOD = 128U;
internal const uint HTTP_LOG_FIELD_URI_STEM = 256U;
internal const uint HTTP_LOG_FIELD_URI_QUERY = 512U;
internal const uint HTTP_LOG_FIELD_STATUS = 1024U;
internal const uint HTTP_LOG_FIELD_WIN32_STATUS = 2048U;
internal const uint HTTP_LOG_FIELD_BYTES_SENT = 4096U;
internal const uint HTTP_LOG_FIELD_BYTES_RECV = 8192U;
internal const uint HTTP_LOG_FIELD_TIME_TAKEN = 16384U;
internal const uint HTTP_LOG_FIELD_SERVER_PORT = 32768U;
internal const uint HTTP_LOG_FIELD_USER_AGENT = 65536U;
internal const uint HTTP_LOG_FIELD_COOKIE = 131072U;
internal const uint HTTP_LOG_FIELD_REFERER = 262144U;
internal const uint HTTP_LOG_FIELD_VERSION = 524288U;
internal const uint HTTP_LOG_FIELD_HOST = 1048576U;
internal const uint HTTP_LOG_FIELD_SUB_STATUS = 2097152U;
internal const uint HTTP_LOG_FIELD_STREAM_ID = 134217728U;
internal const uint HTTP_LOG_FIELD_STREAM_ID_EX = 268435456U;
internal const uint HTTP_LOG_FIELD_TRANSPORT_TYPE = 536870912U;
internal const uint HTTP_LOG_FIELD_CLIENT_PORT = 4194304U;
internal const uint HTTP_LOG_FIELD_URI = 8388608U;
internal const uint HTTP_LOG_FIELD_SITE_ID = 16777216U;
internal const uint HTTP_LOG_FIELD_REASON = 33554432U;
internal const uint HTTP_LOG_FIELD_QUEUE_NAME = 67108864U;
internal const uint HTTP_LOG_FIELD_CORRELATION_ID = 1073741824U;
internal const uint HTTP_LOG_FIELD_FAULT_CODE = 2147483648U;
internal const uint HTTP_LOGGING_FLAG_LOCAL_TIME_ROLLOVER = 1U;
internal const uint HTTP_LOGGING_FLAG_USE_UTF8_CONVERSION = 2U;
internal const uint HTTP_LOGGING_FLAG_LOG_ERRORS_ONLY = 4U;
internal const uint HTTP_LOGGING_FLAG_LOG_SUCCESS_ONLY = 8U;
internal const uint HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING = 1U;
internal const uint HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER = 2U;
internal const uint HTTP_CREATE_REQUEST_QUEUE_FLAG_DELEGATION = 8U;
internal const uint HTTP_RECEIVE_REQUEST_ENTITY_BODY_FLAG_FILL_BUFFER = 1U;
internal const uint HTTP_SEND_RESPONSE_FLAG_DISCONNECT = 1U;
internal const uint HTTP_SEND_RESPONSE_FLAG_MORE_DATA = 2U;
internal const uint HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA = 4U;
internal const uint HTTP_SEND_RESPONSE_FLAG_ENABLE_NAGLING = 8U;
internal const uint HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES = 32U;
internal const uint HTTP_SEND_RESPONSE_FLAG_OPAQUE = 64U;
internal const uint HTTP_SEND_RESPONSE_FLAG_GOAWAY = 256U;
internal const uint HTTP_FLUSH_RESPONSE_FLAG_RECURSIVE = 1U;
internal const uint HTTP_URL_FLAG_REMOVE_ALL = 1U;
internal const uint HTTP_RECEIVE_SECURE_CHANNEL_TOKEN = 1U;
internal const uint HTTP_RECEIVE_FULL_CHAIN = 2U;
internal const uint HTTP_REQUEST_SIZING_INFO_FLAG_TCP_FAST_OPEN = 1U;
internal const uint HTTP_REQUEST_SIZING_INFO_FLAG_TLS_SESSION_RESUMPTION = 2U;
internal const uint HTTP_REQUEST_SIZING_INFO_FLAG_TLS_FALSE_START = 4U;
internal const uint HTTP_REQUEST_SIZING_INFO_FLAG_FIRST_REQUEST = 8U;
internal const uint HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED = 1U;
internal const uint HTTP_REQUEST_FLAG_MORE_ENTITY_BODY_EXISTS = 1U;
internal const uint HTTP_REQUEST_FLAG_IP_ROUTED = 2U;
internal const uint HTTP_REQUEST_FLAG_HTTP2 = 4U;
internal const uint HTTP_REQUEST_FLAG_HTTP3 = 8U;
internal const uint HTTP_RESPONSE_FLAG_MULTIPLE_ENCODINGS_AVAILABLE = 1U;
internal const uint HTTP_RESPONSE_FLAG_MORE_ENTITY_BODY_EXISTS = 2U;
internal const uint HTTP_RESPONSE_INFO_FLAGS_PRESERVE_ORDER = 1U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_USE_DS_MAPPER = 1U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT = 2U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_NO_RAW_FILTER = 4U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_REJECT = 8U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_HTTP2 = 16U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_QUIC = 32U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_TLS13 = 64U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_OCSP_STAPLING = 128U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_ENABLE_TOKEN_BINDING = 256U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_LOG_EXTENDED_EVENTS = 512U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS = 1024U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_ENABLE_SESSION_TICKET = 2048U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_TLS12 = 4096U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_ENABLE_CLIENT_CORRELATION = 8192U;
internal const uint HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_SESSION_ID = 16384U;
internal const uint HTTP_REQUEST_PROPERTY_SNI_HOST_MAX_LENGTH = 255U;
internal const uint HTTP_REQUEST_PROPERTY_SNI_FLAG_SNI_USED = 1U;
internal const uint HTTP_REQUEST_PROPERTY_SNI_FLAG_NO_SNI = 2U;
/// <summary>Defines a version of the HTTP protocol that a request requires or a response provides.</summary>
/// <remarks>
/// <para>For more information about the HTTP protocol, see <a href="https://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>. The following macros define various versions of the HTTP protocol:"#define HTTP_VERSION_UNKNOWN { 0, 0 }""#define HTTP_VERSION_0_9 { 0, 9 }""#define HTTP_VERSION_1_0 { 1, 0 }""#define HTTP_VERSION_1_1 { 1, 1 }" The HTTP Server API provides a number of macros that can be used to evaluate the value of an HTTP_VERSION structure; For more information, see <a href="https://docs.microsoft.com/windows/desktop/Http/http-server-api-version-1-0-macros">HTTP Server API Version 1.0 Macros</a>. <div class="alert"><b>Note</b> The HTTP Server API rejects a version of HTTP larger than 65,535 in either the major or minor portion. If a request includes such a version number, the HTTP Server API discards it and returns a response with status 400 ("Bad Request").</div> <div> </div></para>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/http/ns-http-http_version#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const string HTTP_VERSION = "HTTP/1.0";
internal const uint HTTPREQUEST_PROXYSETTING_DEFAULT = 0U;
internal const uint HTTPREQUEST_PROXYSETTING_PRECONFIG = 0U;
internal const uint HTTPREQUEST_PROXYSETTING_DIRECT = 1U;
internal const uint HTTPREQUEST_PROXYSETTING_PROXY = 2U;
internal const uint HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0U;
internal const uint HTTPREQUEST_SETCREDENTIALS_FOR_PROXY = 1U;
internal const uint HTTP_STATUS_CONTINUE = 100U;
internal const uint HTTP_STATUS_SWITCH_PROTOCOLS = 101U;
internal const uint HTTP_STATUS_OK = 200U;
internal const uint HTTP_STATUS_CREATED = 201U;
internal const uint HTTP_STATUS_ACCEPTED = 202U;
internal const uint HTTP_STATUS_PARTIAL = 203U;
internal const uint HTTP_STATUS_NO_CONTENT = 204U;
internal const uint HTTP_STATUS_RESET_CONTENT = 205U;
internal const uint HTTP_STATUS_PARTIAL_CONTENT = 206U;
internal const uint HTTP_STATUS_WEBDAV_MULTI_STATUS = 207U;
internal const uint HTTP_STATUS_AMBIGUOUS = 300U;
internal const uint HTTP_STATUS_MOVED = 301U;
internal const uint HTTP_STATUS_REDIRECT = 302U;
internal const uint HTTP_STATUS_REDIRECT_METHOD = 303U;
internal const uint HTTP_STATUS_NOT_MODIFIED = 304U;
internal const uint HTTP_STATUS_USE_PROXY = 305U;
internal const uint HTTP_STATUS_REDIRECT_KEEP_VERB = 307U;
internal const uint HTTP_STATUS_PERMANENT_REDIRECT = 308U;
internal const uint HTTP_STATUS_BAD_REQUEST = 400U;
internal const uint HTTP_STATUS_DENIED = 401U;
internal const uint HTTP_STATUS_PAYMENT_REQ = 402U;
internal const uint HTTP_STATUS_FORBIDDEN = 403U;
internal const uint HTTP_STATUS_NOT_FOUND = 404U;
internal const uint HTTP_STATUS_BAD_METHOD = 405U;
internal const uint HTTP_STATUS_NONE_ACCEPTABLE = 406U;
internal const uint HTTP_STATUS_PROXY_AUTH_REQ = 407U;
internal const uint HTTP_STATUS_REQUEST_TIMEOUT = 408U;
internal const uint HTTP_STATUS_CONFLICT = 409U;
internal const uint HTTP_STATUS_GONE = 410U;
internal const uint HTTP_STATUS_LENGTH_REQUIRED = 411U;
internal const uint HTTP_STATUS_PRECOND_FAILED = 412U;
internal const uint HTTP_STATUS_REQUEST_TOO_LARGE = 413U;
internal const uint HTTP_STATUS_URI_TOO_LONG = 414U;
internal const uint HTTP_STATUS_UNSUPPORTED_MEDIA = 415U;
internal const uint HTTP_STATUS_RETRY_WITH = 449U;
internal const uint HTTP_STATUS_SERVER_ERROR = 500U;
internal const uint HTTP_STATUS_NOT_SUPPORTED = 501U;
internal const uint HTTP_STATUS_BAD_GATEWAY = 502U;
internal const uint HTTP_STATUS_SERVICE_UNAVAIL = 503U;
internal const uint HTTP_STATUS_GATEWAY_TIMEOUT = 504U;
internal const uint HTTP_STATUS_VERSION_NOT_SUP = 505U;
internal const uint HTTP_STATUS_FIRST = 100U;
internal const uint HTTP_STATUS_LAST = 505U;
internal const uint HTTP_COOKIES_SAME_SITE_LEVEL_UNKNOWN = 0U;
internal const uint HTTP_COOKIES_SAME_SITE_LEVEL_SAME_SITE = 1U;
internal const uint HTTP_COOKIES_SAME_SITE_LEVEL_CROSS_SITE_LAX = 2U;
internal const uint HTTP_COOKIES_SAME_SITE_LEVEL_CROSS_SITE = 3U;
internal const uint HTTP_COOKIES_SAME_SITE_LEVEL_MAX = 3U;
internal const uint HTTP_PROTOCOL_FLAG_HTTP2 = 2U;
internal const uint HTTP_PROTOCOL_MASK = 2U;
internal const uint HTTP_MAJOR_VERSION = 1U;
internal const uint HTTP_MINOR_VERSION = 0U;
internal const string HTTP_VERSIONA = "HTTP/1.0";
internal const string HTTP_VERSIONW = "HTTP/1.0";
internal const uint HTTP_QUERY_MIME_VERSION = 0U;
internal const uint HTTP_QUERY_CONTENT_TYPE = 1U;
internal const uint HTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2U;
internal const uint HTTP_QUERY_CONTENT_ID = 3U;
internal const uint HTTP_QUERY_CONTENT_DESCRIPTION = 4U;
internal const uint HTTP_QUERY_CONTENT_LENGTH = 5U;
internal const uint HTTP_QUERY_CONTENT_LANGUAGE = 6U;
internal const uint HTTP_QUERY_ALLOW = 7U;
internal const uint HTTP_QUERY_PUBLIC = 8U;
internal const uint HTTP_QUERY_DATE = 9U;
internal const uint HTTP_QUERY_EXPIRES = 10U;
internal const uint HTTP_QUERY_LAST_MODIFIED = 11U;
internal const uint HTTP_QUERY_MESSAGE_ID = 12U;
internal const uint HTTP_QUERY_URI = 13U;
internal const uint HTTP_QUERY_DERIVED_FROM = 14U;
internal const uint HTTP_QUERY_COST = 15U;
internal const uint HTTP_QUERY_LINK = 16U;
internal const uint HTTP_QUERY_PRAGMA = 17U;
internal const uint HTTP_QUERY_VERSION = 18U;
internal const uint HTTP_QUERY_STATUS_CODE = 19U;
internal const uint HTTP_QUERY_STATUS_TEXT = 20U;
internal const uint HTTP_QUERY_RAW_HEADERS = 21U;
internal const uint HTTP_QUERY_RAW_HEADERS_CRLF = 22U;
internal const uint HTTP_QUERY_CONNECTION = 23U;
internal const uint HTTP_QUERY_ACCEPT = 24U;
internal const uint HTTP_QUERY_ACCEPT_CHARSET = 25U;
internal const uint HTTP_QUERY_ACCEPT_ENCODING = 26U;
internal const uint HTTP_QUERY_ACCEPT_LANGUAGE = 27U;
internal const uint HTTP_QUERY_AUTHORIZATION = 28U;
internal const uint HTTP_QUERY_CONTENT_ENCODING = 29U;
internal const uint HTTP_QUERY_FORWARDED = 30U;
internal const uint HTTP_QUERY_FROM = 31U;
internal const uint HTTP_QUERY_IF_MODIFIED_SINCE = 32U;
internal const uint HTTP_QUERY_LOCATION = 33U;
internal const uint HTTP_QUERY_ORIG_URI = 34U;
internal const uint HTTP_QUERY_REFERER = 35U;
internal const uint HTTP_QUERY_RETRY_AFTER = 36U;
internal const uint HTTP_QUERY_SERVER = 37U;
internal const uint HTTP_QUERY_TITLE = 38U;
internal const uint HTTP_QUERY_USER_AGENT = 39U;
internal const uint HTTP_QUERY_WWW_AUTHENTICATE = 40U;
internal const uint HTTP_QUERY_PROXY_AUTHENTICATE = 41U;
internal const uint HTTP_QUERY_ACCEPT_RANGES = 42U;
internal const uint HTTP_QUERY_SET_COOKIE = 43U;
internal const uint HTTP_QUERY_COOKIE = 44U;
internal const uint HTTP_QUERY_REQUEST_METHOD = 45U;
internal const uint HTTP_QUERY_REFRESH = 46U;
internal const uint HTTP_QUERY_CONTENT_DISPOSITION = 47U;
internal const uint HTTP_QUERY_AGE = 48U;
internal const uint HTTP_QUERY_CACHE_CONTROL = 49U;
internal const uint HTTP_QUERY_CONTENT_BASE = 50U;
internal const uint HTTP_QUERY_CONTENT_LOCATION = 51U;
internal const uint HTTP_QUERY_CONTENT_MD5 = 52U;
internal const uint HTTP_QUERY_CONTENT_RANGE = 53U;
internal const uint HTTP_QUERY_ETAG = 54U;
internal const uint HTTP_QUERY_HOST = 55U;
internal const uint HTTP_QUERY_IF_MATCH = 56U;
internal const uint HTTP_QUERY_IF_NONE_MATCH = 57U;
internal const uint HTTP_QUERY_IF_RANGE = 58U;
internal const uint HTTP_QUERY_IF_UNMODIFIED_SINCE = 59U;
internal const uint HTTP_QUERY_MAX_FORWARDS = 60U;
internal const uint HTTP_QUERY_PROXY_AUTHORIZATION = 61U;
internal const uint HTTP_QUERY_RANGE = 62U;
internal const uint HTTP_QUERY_TRANSFER_ENCODING = 63U;
internal const uint HTTP_QUERY_UPGRADE = 64U;
internal const uint HTTP_QUERY_VARY = 65U;
internal const uint HTTP_QUERY_VIA = 66U;
internal const uint HTTP_QUERY_WARNING = 67U;
internal const uint HTTP_QUERY_EXPECT = 68U;
internal const uint HTTP_QUERY_PROXY_CONNECTION = 69U;
internal const uint HTTP_QUERY_UNLESS_MODIFIED_SINCE = 70U;
internal const uint HTTP_QUERY_ECHO_REQUEST = 71U;
internal const uint HTTP_QUERY_ECHO_REPLY = 72U;
internal const uint HTTP_QUERY_ECHO_HEADERS = 73U;
internal const uint HTTP_QUERY_ECHO_HEADERS_CRLF = 74U;
internal const uint HTTP_QUERY_PROXY_SUPPORT = 75U;
internal const uint HTTP_QUERY_AUTHENTICATION_INFO = 76U;
internal const uint HTTP_QUERY_PASSPORT_URLS = 77U;
internal const uint HTTP_QUERY_PASSPORT_CONFIG = 78U;
internal const uint HTTP_QUERY_X_CONTENT_TYPE_OPTIONS = 79U;
internal const uint HTTP_QUERY_P3P = 80U;
internal const uint HTTP_QUERY_X_P2P_PEERDIST = 81U;
internal const uint HTTP_QUERY_TRANSLATE = 82U;
internal const uint HTTP_QUERY_X_UA_COMPATIBLE = 83U;
internal const uint HTTP_QUERY_DEFAULT_STYLE = 84U;
internal const uint HTTP_QUERY_X_FRAME_OPTIONS = 85U;
internal const uint HTTP_QUERY_X_XSS_PROTECTION = 86U;
internal const uint HTTP_QUERY_SET_COOKIE2 = 87U;
internal const uint HTTP_QUERY_DO_NOT_TRACK = 88U;
internal const uint HTTP_QUERY_KEEP_ALIVE = 89U;
internal const uint HTTP_QUERY_HTTP2_SETTINGS = 90U;
internal const uint HTTP_QUERY_STRICT_TRANSPORT_SECURITY = 91U;
internal const uint HTTP_QUERY_TOKEN_BINDING = 92U;
internal const uint HTTP_QUERY_INCLUDE_REFERRED_TOKEN_BINDING_ID = 93U;
internal const uint HTTP_QUERY_INCLUDE_REFERER_TOKEN_BINDING_ID = 93U;
internal const uint HTTP_QUERY_PUBLIC_KEY_PINS = 94U;
internal const uint HTTP_QUERY_PUBLIC_KEY_PINS_REPORT_ONLY = 95U;
internal const uint HTTP_QUERY_MAX = 95U;
internal const uint HTTP_QUERY_CUSTOM = 65535U;
internal const uint HTTP_QUERY_FLAG_REQUEST_HEADERS = 2147483648U;
internal const uint HTTP_QUERY_FLAG_SYSTEMTIME = 1073741824U;
internal const uint HTTP_QUERY_FLAG_NUMBER = 536870912U;
internal const uint HTTP_QUERY_FLAG_COALESCE = 268435456U;
internal const uint HTTP_QUERY_FLAG_NUMBER64 = 134217728U;
internal const uint HTTP_QUERY_FLAG_COALESCE_WITH_COMMA = 67108864U;
internal const uint HTTP_STATUS_MISDIRECTED_REQUEST = 421U;
internal const uint HTTP_ADDREQ_INDEX_MASK = 65535U;
internal const uint HTTP_ADDREQ_FLAGS_MASK = 4294901760U;
internal const uint HTTP_ADDREQ_FLAG_RESPONSE_HEADERS = 33554432U;
internal const uint HTTP_ADDREQ_FLAG_ALLOW_EMPTY_VALUES = 67108864U;
internal const uint HTTP_1_1_CACHE_ENTRY = 64U;
internal const uint HTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123U;
internal const uint HTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 10000U;
internal static readonly global::System.Guid HTTPSPROV_ACTION = new Guid(0x573E31F8, 0xAABA, 0x11D0, 0x8C, 0xCB, 0x00, 0xC0, 0x4F, 0xC2, 0x95, 0xEE);
internal const string HTTPS_FINALPOLICY_FUNCTION = "HTTPSFinalProv";
internal const string HTTPS_CHKCERT_FUNCTION = "HTTPSCheckCertProv";
internal const string HTTPS_CERTTRUST_FUNCTION = "HTTPSCertificateTrust";
internal const uint ICM_NOTOPEN = 0U;
internal const uint ICM_LEVEL3 = 1U;
internal const uint ICM_LEVEL2 = 2U;
internal const uint ICM_LEVEL2_5 = 3U;
internal const uint ICM_LEVEL2_SUI = 4U;
internal const uint ICM_CTF = 5U;
internal const uint ICM_RESERVED = 20480U;
internal const uint ICM_USER = 16384U;
internal const uint ICM_RESERVED_LOW = 20480U;
internal const uint ICM_RESERVED_HIGH = 24576U;
/// <summary>The ICM\_GETSTATE message queries a video compression driver to return its current configuration in a block of memory or to determine the amount of memory required to retrieve the configuration information.</summary>
/// <returns>
/// <para><span id="pv"></span><span id="PV"></span>*pv* Pointer to a block of memory to contain the current configuration information. You can specify **NULL** for this parameter to determine the amount of memory required for the configuration information, as in [**ICGetStateSize**](/windows/desktop/api/Vfw/nf-vfw-icgetstatesize).</para>
/// <para><span id="cb"></span><span id="CB"></span>*cb* Size, in bytes, of the block of memory.</para>
/// <para>If *pv* is **NULL**, returns the amount of memory, in bytes, required for configuration information. If *pv* is not **NULL**, returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>The structure used to represent configuration information is driver specific and is defined by the driver.</remarks>
internal const uint ICM_GETSTATE = 20480U;
/// <summary>The ICM\_SETSTATE message notifies a video compression driver to set the state of the compressor. You can send this message explicitly or by using the ICSetState macro.</summary>
/// <returns>
/// <para><span id="pv"></span><span id="PV"></span>*pv* Pointer to a block of memory containing configuration data. You can specify **NULL** for this parameter to reset the compressor to its default state.</para>
/// <para><span id="cb"></span><span id="CB"></span>*cb* Size, in bytes, of the block of memory.</para>
/// <para>Returns the number of bytes used by the compressor if successful or zero otherwise.</para>
/// </returns>
/// <remarks>The information used by this message is private and specific to a given compressor. Client applications should use this message only to restore information previously obtained with the [**ICM\_GETSTATE**](icm-getstate.md) message and should use the [**ICM\_CONFIGURE**](icm-configure.md) message to adjust the configuration of a video compression driver.</remarks>
internal const uint ICM_SETSTATE = 20481U;
/// <summary>The ICM\_GETINFO message queries a video compression driver to return a description of itself in an ICINFO structure.</summary>
/// <returns>
/// <para><span id="lpicinfo"></span><span id="LPICINFO"></span>*lpicinfo* Pointer to an **ICINFO** structure to contain information.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of **ICINFO**.</para>
/// <para>Returns the size, in bytes, of [**ICINFO**](/windows/desktop/api/Vfw/ns-vfw-icinfo) or zero if an error occurs..</para>
/// </returns>
/// <remarks>
/// <para>Typically, applications send this message to display a list of the installed compressors. The driver should fill all members of the [**ICINFO**](/windows/desktop/api/Vfw/ns-vfw-icinfo) structure except **szDriver**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-getinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_GETINFO = 20482U;
/// <summary>The ICM\_CONFIGURE message notifies a video compression driver to display its configuration dialog box or queries a video compression driver to determine if it has a configuration dialog box.</summary>
/// <returns>
/// <para><span id="hwnd"></span><span id="HWND"></span>*hwnd* Handle to the parent window of the displayed dialog box. You can determine if a driver has a configuration dialog box by specifying 1 in this parameter, as in the [**ICQueryConfigure**](/windows/desktop/api/Vfw/nf-vfw-icqueryconfigure) macro.</para>
/// <para>Returns ICERR\_OK if the driver supports this message or ICERR\_UNSUPPORTED otherwise.</para>
/// </returns>
/// <remarks>This message is different from the [**DRV\_CONFIGURE**](drv-configure.md) message used for hardware configuration. The dialog box for this message should let the user set and edit the internal state referenced by the [**ICM\_GETSTATE**](icm-getstate.md) and [**ICM\_SETSTATE**](icm-setstate.md) messages. For example, this dialog box can let the user change parameters affecting the quality level and other similar compression options.</remarks>
internal const uint ICM_CONFIGURE = 20490U;
/// <summary>The ICM\_ABOUT message notifies a video compression driver to display its About dialog box or queries a video compression driver to determine if it has an About dialog box. You can send this message explicitly or by using the ICAbout macro.</summary>
/// <returns>
/// <para><span id="hwnd"></span><span id="HWND"></span>*hwnd* Handle to the parent window of the displayed dialog box. You can also determine if a driver has an About dialog box by specifying -1 in this parameter, as in the [**ICQueryAbout**](/windows/desktop/api/Vfw/nf-vfw-icqueryabout) macro. The driver returns ICERR\_OK if it has an About dialog box or ICERR\_UNSUPPORTED otherwise.</para>
/// <para>Returns ICERR\_OK if the driver supports this message or ICERR\_UNSUPPORTED otherwise.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-about">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_ABOUT = 20491U;
internal const uint ICM_GETERRORTEXT = 20492U;
internal const uint ICM_GETFORMATNAME = 20500U;
internal const uint ICM_ENUMFORMATS = 20501U;
/// <summary>The ICM\_GETDEFAULTQUALITY message queries a video compression driver to provide its default quality setting. You can send this message explicitly or by using the ICGetDefaultQuality macro.</summary>
/// <returns>
/// <para><span id="dwICValue"></span><span id="dwicvalue"></span><span id="DWICVALUE"></span>*dwICValue* Address to contain the default quality value. Quality values range from 0 to 10,000.</para>
/// <para>Returns ICERR\_OK if the driver supports this message or ICERR\_UNSUPPORTED otherwise.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-getdefaultquality">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_GETDEFAULTQUALITY = 20510U;
/// <summary>The ICM\_GETQUALITY message queries a video compression driver to return its current quality setting.</summary>
/// <returns>
/// <para><span id="dwICValue"></span><span id="dwicvalue"></span><span id="DWICVALUE"></span>*dwICValue* Address to contain the current quality value. Quality values range from 0 to 10,000.</para>
/// <para>Returns ICERR\_OK if the driver supports this message or ICERR\_UNSUPPORTED otherwise.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-getquality">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_GETQUALITY = 20511U;
/// <summary>The ICM\_SETQUALITY message provides a video compression driver with a quality level to use during compression.</summary>
/// <returns>
/// <para><span id="dwICValue"></span><span id="dwicvalue"></span><span id="DWICVALUE"></span>*dwICValue* New quality value. Quality values range from 0 to 10,000.</para>
/// <para>Returns ICERR\_OK if the driver supports this message or ICERR\_UNSUPPORTED otherwise.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-setquality">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_SETQUALITY = 20512U;
internal const uint ICM_SET = 20520U;
/// <summary>The ICM\_GET message retrieves an application-defined DWORD value from a video compression driver.</summary>
/// <returns>
/// <para><span id="pv"></span><span id="PV"></span>*pv* Pointer to a block of memory to be filled with the current state. You can also specify **NULL** to determine the amount of memory required by the state information.</para>
/// <para><span id="cb"></span><span id="CB"></span>*cb* Size, in bytes, of the block of memory.</para>
/// <para>Returns the amount of memory, in bytes, required to store the status information.</para>
/// </returns>
/// <remarks>The structure used to represent state information is driver specific and is defined by the driver.</remarks>
internal const uint ICM_GET = 20521U;
/// <summary>The ICM\_COMPRESS\_GET\_FORMAT message requests the output format of the compressed data from a video compression driver. You can send this message explicitly or by using the ICCompressGetFormat macro.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the input format.</para>
/// <para><span id="lpbiOutput"></span><span id="lpbioutput"></span><span id="LPBIOUTPUT"></span>*lpbiOutput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure to contain the output format. You can specify zero for this parameter to request only the size of the output format, as in the [**ICCompressGetFormatSize**](/windows/desktop/api/Vfw/nf-vfw-iccompressgetformatsize) macro.</para>
/// <para>If *lpbiOutput* is zero, returns the size of the structure. If *lpbiOutput* is nonzero, returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>If *lpbiOutput* is nonzero, the driver should fill the [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure with the default output format corresponding to the input format specified for *lpbiInput*. If the compressor can produce several formats, the default format should be the one that preserves the greatest amount of information.</remarks>
internal const uint ICM_COMPRESS_GET_FORMAT = 16388U;
/// <summary>The ICM\_COMPRESS\_GET\_SIZE message requests that the video compression driver supply the maximum size of one frame of data when compressed into the specified output format. You can send this message explicitly or by using the ICCompressGetSize macro.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the input format.</para>
/// <para><span id="lpbiOutput"></span><span id="lpbioutput"></span><span id="LPBIOUTPUT"></span>*lpbiOutput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the output format.</para>
/// <para>Returns the maximum number of bytes a single compressed frame can occupy.</para>
/// </returns>
/// <remarks>
/// <para>Typically, applications send this message to determine how large a buffer to allocate for the compressed frame. The driver should calculate the size of the largest possible frame based on the input and output formats.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-compress-get-size#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_COMPRESS_GET_SIZE = 16389U;
/// <summary>The ICM\_COMPRESS\_QUERY message queries a video compression driver to determine if it supports a specific input format or if it can compress a specific input format to a specific output format.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the input format.</para>
/// <para><span id="lpbiOutput"></span><span id="lpbioutput"></span><span id="LPBIOUTPUT"></span>*lpbiOutput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the output format. You can specify zero for this parameter to indicate any output format is acceptable.</para>
/// <para>Returns ICERR\_OK if the specified compression is supported or ICERR\_BADFORMAT otherwise.</para>
/// </returns>
/// <remarks>When a driver receives this message, it should examine the [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure associated with *lpbiInput* to determine if it can compress the input format.</remarks>
internal const uint ICM_COMPRESS_QUERY = 16390U;
/// <summary>The ICM\_COMPRESS\_BEGIN message notifies a video compression driver to prepare to compress data. You can send this message explicitly or by using the ICCompressBegin macro.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the input format.</para>
/// <para><span id="lpbiOutput"></span><span id="lpbioutput"></span><span id="LPBIOUTPUT"></span>*lpbiOutput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the output format.</para>
/// <para>Returns ICERR\_OK if the driver supports the specified compression or ICERR\_BADFORMAT if the input or output format is not supported.</para>
/// </returns>
/// <remarks>
/// <para>The driver should allocate and initialize any tables or memory that it needs for compressing the data formats when it receives the [**ICM\_COMPRESS**](icm-compress.md) message. VCM saves the settings of the most recent **ICM\_COMPRESS\_BEGIN** message. The **ICM\_COMPRESS\_BEGIN** and [**ICM\_COMPRESS\_END**](icm-compress-end.md) messages do not nest. If your driver receives **ICM\_COMPRESS\_BEGIN** before compression is stopped with **ICM\_COMPRESS\_END**, it should restart compression with new parameters.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-compress-begin#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_COMPRESS_BEGIN = 16391U;
/// <summary>The ICM\_COMPRESS message notifies a video compression driver to compress a frame of data into an application-defined buffer.</summary>
/// <returns>
/// <para><span id="icc"></span><span id="ICC"></span>*icc* Pointer to an [**ICCOMPRESS**](/windows/desktop/api/Vfw/ns-vfw-iccompress) structure. The following members of this structure specify the compression parameters: **lpbiInput**, **lpInput**, **lpbiOutput**, **lpOutput**, **lpbiPrev**, **lpPrev**, **lpckid**, **lpdwFlags**, **dwFrameSize**, and **dwQuality**. The driver should also use the **biSizeImage** member of the [**BITMAPINFOHEADER**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfoheader) structure associated with **lpbiOutput** of **ICCOMPRESS** to return the size of the compressed frame.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of [**ICCOMPRESS**](/windows/desktop/api/Vfw/ns-vfw-iccompress).</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-compress">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_COMPRESS = 16392U;
/// <summary>The ICM\_COMPRESS\_END message notifies a video compression driver to end compression and free resources allocated for compression. You can send this message explicitly or by using the ICCompressEnd macro.</summary>
/// <returns>Returns ICERR\_OK if successful or an error otherwise.</returns>
/// <remarks>VCM saves the settings of the most recent [**ICM\_COMPRESS\_BEGIN**](icm-compress-begin.md) message. **ICM\_COMPRESS\_BEGIN** and **ICM\_COMPRESS\_END** do not nest. If your driver receives **ICM\_COMPRESS\_BEGIN** before compression is stopped with **ICM\_COMPRESS\_END**, it should restart compression with new parameters.</remarks>
internal const uint ICM_COMPRESS_END = 16393U;
/// <summary>The ICM\_DECOMPRESS\_GET\_FORMAT message requests the output format of the decompressed data from a video decompression driver. You can send this message explicitly or by using the ICDecompressGetFormat macro.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the input format.</para>
/// <para><span id="lpbiOutput"></span><span id="lpbioutput"></span><span id="LPBIOUTPUT"></span>*lpbiOutput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure to contain the output format. You can specify zero to request only the size of the output format, as in the [**ICDecompressGetFormatSize**](/windows/desktop/api/Vfw/nf-vfw-icdecompressgetformatsize) macro.</para>
/// <para>If *lpbiOutput* is zero, returns the size of the structure. If *lpbiOutput* is nonzero, returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>If *lpbiOutput* is nonzero, the driver should fill the [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure with the default output format corresponding to the input format specified for *lpbiInput*. If the compressor can produce several formats, the default format should be the one that preserves the greatest amount of information.</remarks>
internal const uint ICM_DECOMPRESS_GET_FORMAT = 16394U;
/// <summary>The ICM\_DECOMPRESS\_QUERY message queries a video decompression driver to determine if it supports a specific input format or if it can decompress a specific input format to a specific output format.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the input format.</para>
/// <para><span id="lpbiOutput"></span><span id="lpbioutput"></span><span id="LPBIOUTPUT"></span>*lpbiOutput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the output format. You can specify zero for this parameter to indicate any output format is acceptable.</para>
/// <para>Returns ICERR\_OK if the specified decompression is supported or ICERR\_BADFORMAT otherwise.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompress-query">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESS_QUERY = 16395U;
/// <summary>The ICM\_DECOMPRESS\_BEGIN message notifies a video decompression driver to prepare to decompress data. You can send this message explicitly or by using the ICDecompressBegin macro.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the input format.</para>
/// <para><span id="lpbiOutput"></span><span id="lpbioutput"></span><span id="LPBIOUTPUT"></span>*lpbiOutput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the output format.</para>
/// <para>Returns ICERR\_OK if the specified decompression is supported or ICERR\_BADFORMAT otherwise.</para>
/// </returns>
/// <remarks>
/// <para>When the driver receives this message, it should allocate buffers and do any time-consuming operations so that it can process [**ICM\_DECOMPRESS**](icm-decompress.md) messages efficiently. If you want the driver to decompress data directly to the screen, send the [**ICM\_DRAW**](icm-draw.md) message. The **ICM\_DECOMPRESS\_BEGIN** and [**ICM\_DECOMPRESS\_END**](icm-decompress-end.md) messages do not nest. If your driver receives **ICM\_DECOMPRESS\_BEGIN** before decompression is stopped with **ICM\_DECOMPRESS\_END**, it should restart decompression with new parameters.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompress-begin#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESS_BEGIN = 16396U;
/// <summary>The ICM\_DECOMPRESS message notifies a video decompression driver to decompress a frame of data into an application-defined buffer.</summary>
/// <returns>
/// <para><span id="icd"></span><span id="ICD"></span>*icd* Pointer to an [**ICDECOMPRESS**](/windows/desktop/api/Vfw/ns-vfw-icdecompress) structure.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of [**ICDECOMPRESS**](/windows/desktop/api/Vfw/ns-vfw-icdecompress).</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>
/// <para>If you want the driver to decompress data directly to the screen, send the [**ICM\_DRAW**](icm-draw.md) message. The driver returns an error if this message is received before the [**ICM\_DECOMPRESS\_BEGIN**](icm-decompress-begin.md) message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompress#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESS = 16397U;
/// <summary>The ICM\_DECOMPRESS\_END message notifies a video decompression driver to end decompression and free resources allocated for decompression. You can send this message explicitly or by using the ICDecompressEnd macro.</summary>
/// <returns>Returns ICERR\_OK if successful or an error otherwise.</returns>
/// <remarks>
/// <para>The driver should free any resources allocated for the [**ICM\_DECOMPRESS\_BEGIN**](icm-decompress-begin.md) message. [**ICM\_DECOMPRESS\_BEGIN**](icm-decompress-begin.md) and **ICM\_DECOMPRESS\_END** do not nest. If your driver receives **ICM\_DECOMPRESS\_BEGIN** before decompression is stopped with **ICM\_DECOMPRESS\_END**, it should restart decompression with new parameters.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompress-end#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESS_END = 16398U;
/// <summary>The ICM\_DECOMPRESS\_SET\_PALETTE message specifies a palette for a video decompression driver to use if it is decompressing to a format that uses a palette. You can send this message explicitly or by using the ICDecompressSetPalette macro.</summary>
/// <returns>
/// <para><span id="lpbiPalette"></span><span id="lpbipalette"></span><span id="LPBIPALETTE"></span>*lpbiPalette* Pointer to a [**BITMAPINFOHEADER**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfoheader) structure whose color table contains the colors that should be used if possible. You can specify zero to use the default set of output colors.</para>
/// <para>Returns ICERR\_OK if the decompression driver can precisely decompress images to the suggested palette using the set of colors as they are arranged in the palette. Returns ICERR\_UNSUPPORTED otherwise.</para>
/// </returns>
/// <remarks>
/// <para>This message should not affect decompression already in progress; rather, colors passed using this message should be returned in response to future [**ICM\_DECOMPRESS\_GET\_FORMAT**](icm-decompress-get-format.md) and [**ICM\_DECOMPRESS\_GET\_PALETTE**](icm-decompress-get-palette.md) messages. Colors are sent back to the decompression driver in a future [**ICM\_DECOMPRESS\_BEGIN**](icm-decompress-begin.md) message. This message is used primarily when a driver decompresses images to the screen and another application that uses a palette is in the foreground, forcing the decompression driver to adapt to a foreign set of colors.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompress-set-palette#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESS_SET_PALETTE = 16413U;
/// <summary>The ICM\_DECOMPRESS\_GET\_PALETTE message requests that the video decompression driver supply the color table of the output BITMAPINFOHEADER structure. You can send this message explicitly or by using the ICDecompressGetPalette macro.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFOHEADER**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfoheader) structure containing the input format.</para>
/// <para><span id="lpbiOutput"></span><span id="lpbioutput"></span><span id="LPBIOUTPUT"></span>*lpbiOutput* Pointer to a [**BITMAPINFOHEADER**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfoheader) structure to contain the color table. The space reserved for the color table is always at least 256 colors. You can specify zero for this parameter to return only the size of the color table.</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>
/// <para>If *lpbiOutput* is nonzero, the driver sets the **biClrUsed** member of [**BITMAPINFOHEADER**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfoheader) to the number of colors in the color table. The driver fills the **bmiColors** member of [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) with the actual colors. The driver should support this message only if it uses a palette other than the one specified in the input format.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompress-get-palette#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESS_GET_PALETTE = 16414U;
/// <summary>The ICM\_DRAW\_QUERY message queries a rendering driver to determine if it can render data in a specific format. You can send this message explicitly or by using the ICDrawQuery macro.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the input format.</para>
/// <para>Returns ICERR\_OK if the driver can render data in the specified format or ICERR\_BADFORMAT otherwise.</para>
/// </returns>
/// <remarks>This message differs from the [**ICM\_DRAW\_BEGIN**](icm-draw-begin.md) message in that it queries the driver in a general sense. **ICM\_DRAW\_BEGIN** determines if the driver can draw the data using the specified format under specific conditions, such as stretching the image.</remarks>
internal const uint ICM_DRAW_QUERY = 16415U;
/// <summary>The ICM\_DRAW\_BEGIN message notifies a rendering driver to prepare to draw data.</summary>
/// <returns>
/// <para><span id="icdrwBgn"></span><span id="icdrwbgn"></span><span id="ICDRWBGN"></span>*icdrwBgn* Pointer to an [**ICDRAWBEGIN**](/windows/desktop/api/Vfw/ns-vfw-icdrawbegin) structure containing the input format.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of **ICDRAWBEGIN**.</para>
/// <para>Returns ICERR\_OK if the driver supports drawing the data to the screen in the specified manner and format, or an error code otherwise. Possible error values include the following.</para>
/// <para>| Value | Meaning | |---------------------|-------------------------------------------------------------------------------| | ICERR\_BADFORMAT | Input or output format is not supported. | | ICERR\_NOTSUPPORTED | Driver does not draw directly to the screen or does not support this message. |</para>
/// </returns>
/// <remarks>
/// <para>If you want the driver to decompress data into a buffer, send the [**ICM\_DECOMPRESS\_BEGIN**](icm-decompress-begin.md) message. The **ICM\_DRAW\_BEGIN** and [**ICM\_DRAW\_END**](icm-draw-end.md) messages do not nest. If your driver receives **ICM\_DRAW\_BEGIN** before decompression is stopped with **ICM\_DRAW\_END**, it should restart decompression with new parameters.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw-begin#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW_BEGIN = 16399U;
/// <summary>The ICM\_DRAW\_GET\_PALETTE message requests a rendering driver to return a palette.</summary>
/// <returns>The driver should return one of the following: a handle of the palette being used, **NULL** if it doesn't have a handle to return, or ICERR\_UNSUPPORTED if it doesn't support palettes.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw-get-palette">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW_GET_PALETTE = 16400U;
internal const uint ICM_DRAW_UPDATE = 16401U;
/// <summary>The ICM\_DRAW\_START message notifies a rendering driver to start its internal clock for the timing of drawing frames. You can send this message explicitly or by using the ICDrawStart macro.</summary>
/// <returns>This message does not return a value.</returns>
/// <remarks>
/// <para>This message is used by hardware that performs its own asynchronous decompression, timing, and drawing. When the driver receives this message, it should start rendering data at the rate specified with the [**ICM\_DRAW\_BEGIN**](icm-draw-begin.md) message. The **ICM\_DRAW\_START** and [**ICM\_DRAW\_STOP**](icm-draw-stop.md) messages do not nest. If your driver receives **ICM\_DRAW\_START** before rendering is stopped with **ICM\_DRAW\_STOP**, it should restart rendering with new parameters.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw-start#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW_START = 16402U;
/// <summary>The ICM\_DRAW\_STOP message notifies a rendering driver to stop its internal clock for the timing of drawing frames. You can send this message explicitly or by using the ICDrawStop macro.</summary>
/// <returns>This message does not return a value.</returns>
/// <remarks>This message is used by hardware that performs its own asynchronous decompression, timing, and drawing.</remarks>
internal const uint ICM_DRAW_STOP = 16403U;
internal const uint ICM_DRAW_BITS = 16404U;
/// <summary>The ICM\_DRAW\_END message notifies a rendering driver to decompress the current image to the screen and to release resources allocated for decompression and drawing. You can send this message explicitly or by using the ICDrawEnd macro.</summary>
/// <returns>Returns ICERR\_OK if successful or an error otherwise.</returns>
/// <remarks>The [**ICM\_DRAW\_BEGIN**](icm-draw-begin.md) and **ICM\_DRAW\_END** messages do not nest. If your driver receives **ICM\_DRAW\_BEGIN** before decompression is stopped with **ICM\_DRAW\_END**, it should restart decompression with new parameters.</remarks>
internal const uint ICM_DRAW_END = 16405U;
/// <summary>The ICM\_DRAW\_GETTIME message requests a rendering driver that controls the timing of drawing frames to return the current value of its internal clock. You can send this message explicitly or by using the ICDrawGetTime macro.</summary>
/// <returns>
/// <para><span id="lplTime"></span><span id="lpltime"></span><span id="LPLTIME"></span>*lplTime* Address to contain the current time. The return value should be specified in samples.</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>This message is generally supported by hardware that performs its own asynchronous decompression, timing, and drawing. The message can also be sent if the hardware is being used as the synchronization master.</remarks>
internal const uint ICM_DRAW_GETTIME = 16416U;
/// <summary>The ICM\_DRAW message notifies a rendering driver to decompress a frame of data and draw it to the screen.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Pointer to an [**ICDRAW**](/windows/desktop/api/Vfw/ns-vfw-icdraw) structure.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of [**ICDRAW**](/windows/desktop/api/Vfw/ns-vfw-icdraw).</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>
/// <para>If the ICDRAW\_UPDATE flag is set in the **dwFlags** member of [**ICDRAW**](/windows/desktop/api/Vfw/ns-vfw-icdraw), the area of the screen used for drawing is invalid and needs to be updated. The extent of updating depends on the contents of the **lpData** member. If **lpData** is **NULL**, the driver should update the entire destination rectangle with the current image. If the driver maintains a copy of the image in an off-screen buffer, it can fail this message. If **lpData** is not **NULL**, the driver should draw the data and make sure the entire destination is updated. If the ICDRAW\_HURRYUP flag is set in **dwFlags**, the calling application wants the driver to proceed as quickly as possible, possibly not even updating the screen. If the ICDRAW\_PREROLL flag is set in **dwFlags**, this video frame is preliminary information and should not be displayed if possible. For example, if play is to start from frame 10, and frame 0 is the nearest previous key frame, frames 0 through 9 will have ICDRAW\_PREROLL set. If you want the driver to decompress data into a buffer, send the [**ICM\_DECOMPRESS**](icm-decompress.md) message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW = 16417U;
/// <summary>The ICM\_DRAW\_WINDOW message notifies a rendering driver that the window specified for the ICM\_DRAW\_BEGIN message needs to be redrawn.</summary>
/// <returns>
/// <para><span id="prc"></span><span id="PRC"></span>*prc* Pointer to the destination rectangle in screen coordinates. If this parameter points to an empty rectangle, drawing should be turned off.</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>
/// <para>This message is supported by hardware that performs its own asynchronous decompression, timing, and drawing. Video-overlay drivers use this message to draw when the window is obscured or moved. When a window specified for [**ICM\_DRAW\_BEGIN**](icm-draw-begin.md) is completely hidden by other windows, the destination rectangle is empty. Drivers should turn off video-overlay hardware when this condition occurs.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw-window#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW_WINDOW = 16418U;
/// <summary>The ICM\_DRAW\_SETTIME provides synchronization information to a rendering driver that handles the timing of drawing frames.</summary>
/// <returns>
/// <para><span id="lpTime"></span><span id="lptime"></span><span id="LPTIME"></span>*lpTime* Sample number of the frame to render.</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>
/// <para>Typically, the driver compares the specified value with the frame number associated with the time of its internal clock and attempts to synchronize the two if the difference is significant. Use this message when the hardware performs its own asynchronous decompression, timing, and drawing, and the hardware relies on an external synchronization signal (the hardware is not being used as the synchronization master).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw-settime#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW_SETTIME = 16419U;
/// <summary>The ICM\_DRAW\_REALIZE message notifies a rendering driver to realize its drawing palette while drawing. You can send this message explicitly or by using the ICDrawRealize macro.</summary>
/// <returns>
/// <para><span id="hdc"></span><span id="HDC"></span>*hdc* Handle to the DC used to realize the palette.</para>
/// <para><span id="fBackground"></span><span id="fbackground"></span><span id="FBACKGROUND"></span>*fBackground* Background flag. Specify **TRUE** to realize the palette as a background task or **FALSE** to realize the palette in the foreground.</para>
/// <para>Returns ICERR\_OK if the drawing palette is realized or ICERR\_UNSUPPORTED if the palette associated with the decompressed data is realized.</para>
/// </returns>
/// <remarks>Drivers need to respond to this message only if the drawing palette is different from the decompressed palette.</remarks>
internal const uint ICM_DRAW_REALIZE = 16420U;
/// <summary>The ICM\_DRAW\_FLUSH message notifies a rendering driver to render the contents of any image buffers that are waiting to be drawn. You can send this message explicitly or by using the ICDrawFlush macro.</summary>
/// <returns>Returns ICERR\_OK if successful or an error otherwise.</returns>
/// <remarks>This message is used only by hardware that performs its own asynchronous decompression, timing, and drawing.</remarks>
internal const uint ICM_DRAW_FLUSH = 16421U;
/// <summary>The ICM\_DRAW\_RENDERBUFFER message notifies a rendering driver to draw the frames that have been passed to it. You can send this message explicitly or by using the ICDrawRenderBuffer macro.</summary>
/// <returns>This message does not return a value.</returns>
/// <remarks>
/// <para>Use this message with hardware that performs its own asynchronous decompression, timing, and drawing. This message is typically used to perform a seek operation when the driver must be specifically instructed to display each video frame passed to it rather than playing a sequence of video frames.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw-renderbuffer#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW_RENDERBUFFER = 16422U;
/// <summary>The ICM\_DRAW\_START\_PLAY message provides the start and end times of a play operation to a rendering driver. You can send this message explicitly or by using the ICDrawStartPlay macro.</summary>
/// <returns>
/// <para><span id="lFrom"></span><span id="lfrom"></span><span id="LFROM"></span>*lFrom* Start time.</para>
/// <para><span id="lTo"></span><span id="lto"></span><span id="LTO"></span>*lTo* End time.</para>
/// <para>This message does not return a value.</para>
/// </returns>
/// <remarks>
/// <para>This message precedes any frame data sent to the rendering driver. Units for *lFrom* and *lTo* are specified with the [**ICM\_DRAW\_BEGIN**](icm-draw-begin.md) message. For video data this is normally a frame number. For more information about the playback rate, see the **dwRate** and **dwScale** members of the [**ICDRAWBEGIN**](/windows/desktop/api/Vfw/ns-vfw-icdrawbegin) structure. If the end time is less than the start time, the playback direction is reversed.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw-start-play#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW_START_PLAY = 16423U;
/// <summary>The ICM\_DRAW\_STOP\_PLAY message notifies a rendering driver when a play operation is complete. You can send this message explicitly or by using the ICDrawStopPlay macro.</summary>
/// <returns>This message does not return a value.</returns>
/// <remarks>Use this message when the play operation is complete. Use the [**ICM\_DRAW\_STOP**](icm-draw-stop.md) message to end timing.</remarks>
internal const uint ICM_DRAW_STOP_PLAY = 16424U;
/// <summary>The ICM\_DRAW\_SUGGESTFORMAT message queries a rendering driver to suggest a decompressed format that it can draw.</summary>
/// <returns>
/// <para><span id="icdrwSuggest"></span><span id="icdrwsuggest"></span><span id="ICDRWSUGGEST"></span>*icdrwSuggest* Pointer to an [**ICDRAWSUGGEST**](/windows/desktop/api/Vfw/ns-vfw-icdrawsuggest) structure.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of [**ICDRAWSUGGEST**](/windows/desktop/api/Vfw/ns-vfw-icdrawsuggest).</para>
/// <para>Returns ICERR\_OK if successful. If the **lpbiSuggest** member of the [**ICDRAWSUGGEST**](/windows/desktop/api/Vfw/ns-vfw-icdrawsuggest) structure is **NULL**, this message returns the amount of memory required to contain the suggested format.</para>
/// </returns>
/// <remarks>
/// <para>The driver should examine the format specified in the **lpbiIn** member of the [**ICDRAWSUGGEST**](/windows/desktop/api/Vfw/ns-vfw-icdrawsuggest) structure and use the **lpbiSuggest** member to return a format it can draw. The output format should preserve as much data as possible from the input format. Optionally, the driver can use the installable compressor handle passed in the **hicDecompressor** member of [**ICDRAWSUGGEST**](/windows/desktop/api/Vfw/ns-vfw-icdrawsuggest) to make more complex selections. For example, if the input format is 24-bit JPEG data, a renderer could query the decompressor to find out if it can decompress to a YUV format (which might be drawn more efficiently) before selecting the format to suggest.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-draw-suggestformat#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DRAW_SUGGESTFORMAT = 16434U;
/// <summary>The ICM\_DRAW\_CHANGEPALETTE message notifies a rendering driver that the movie palette is changing. You can send this message explicitly or by using the ICDrawChangePalette macro.</summary>
/// <returns>
/// <para><span id="lpbiInput"></span><span id="lpbiinput"></span><span id="LPBIINPUT"></span>*lpbiInput* Pointer to a [**BITMAPINFO**](/windows/win32/api/wingdi/ns-wingdi-bitmapinfo) structure containing the new format and optional color table.</para>
/// <para>Returns ICERR\_OK if successful or **FALSE** otherwise.</para>
/// </returns>
/// <remarks>This message should be supported by installable rendering handlers that draw DIBs with an internal structure that includes a palette.</remarks>
internal const uint ICM_DRAW_CHANGEPALETTE = 16435U;
internal const uint ICM_DRAW_IDLE = 16436U;
/// <summary>The ICM\_GETBUFFERSWANTED message queries a driver for the number of buffers to allocate. You can send this message explicitly or by using the ICGetBuffersWanted macro.</summary>
/// <returns>
/// <para><span id="lpdwBuffers"></span><span id="lpdwbuffers"></span><span id="LPDWBUFFERS"></span>*lpdwBuffers* Address to contain the number of samples the driver needs to efficiently render the data.</para>
/// <para>Returns ICERR\_OK if successful or ICERR\_UNSUPPORTED otherwise.</para>
/// </returns>
/// <remarks>This message is used by drivers that use hardware to render data and want to ensure a minimal time lag caused by waiting for buffers to arrive. For example, if a driver controls a video decompression board that can hold 10 frames of video, it could return 10 for this message. This instructs applications to try to stay 10 frames ahead of the frame it currently needs.</remarks>
internal const uint ICM_GETBUFFERSWANTED = 16425U;
/// <summary>The ICM\_GETDEFAULTKEYFRAMERATE message queries a video compression driver for its default (or preferred) key-frame spacing. You can send this message explicitly or by using the ICGetDefaulteyFrameRate macro.</summary>
/// <returns>
/// <para><span id="dwICValue"></span><span id="dwicvalue"></span><span id="DWICVALUE"></span>*dwICValue* Address to contain the preferred key-frame spacing.</para>
/// <para>Returns ICERR\_OK if the driver supports this message or ICERR\_UNSUPPORTED otherwise.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-getdefaultkeyframerate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_GETDEFAULTKEYFRAMERATE = 16426U;
/// <summary>The ICM\_DECOMPRESSEX\_BEGIN message notifies a video compression driver to prepare to decompress data.</summary>
/// <returns>
/// <para><span id="icdex"></span><span id="ICDEX"></span>*icdex* Pointer to a [**ICDECOMPRESSEX**](/windows/desktop/api/Vfw/ns-vfw-icdecompressex) structure containing the input and output formats.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of [**ICDECOMPRESSEX**](/windows/desktop/api/Vfw/ns-vfw-icdecompressex).</para>
/// <para>Returns ICERR\_OK if the specified decompression is supported or ICERR\_BADFORMAT otherwise.</para>
/// </returns>
/// <remarks>
/// <para>When the driver receives this message, it should allocate buffers and do any time-consuming operations so that it can process [**ICM\_DECOMPRESSEX**](icm-decompressex.md) messages efficiently. If you want the driver to decompress data directly to the screen, send the [**ICM\_DRAW\_BEGIN**](icm-draw-begin.md) message. The **ICM\_DECOMPRESSEX\_BEGIN** and [**ICM\_DECOMPRESSEX\_END**](icm-decompressex-end.md) messages do not nest. If your driver receives **ICM\_DECOMPRESSEX\_BEGIN** before decompression is stopped with **ICM\_DECOMPRESSEX\_END**, it should restart decompression with new parameters.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompressex-begin#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESSEX_BEGIN = 16444U;
/// <summary>The ICM\_DECOMPRESSEX\_QUERY message queries a video compression driver to determine if it supports a specific input format or if it can decompress a specific input format to a specific output format.</summary>
/// <returns>
/// <para><span id="icdex"></span><span id="ICDEX"></span>*icdex* Pointer to a [**ICDECOMPRESSEX**](/windows/desktop/api/Vfw/ns-vfw-icdecompressex) structure containing the input format.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of [**ICDECOMPRESSEX**](/windows/desktop/api/Vfw/ns-vfw-icdecompressex).</para>
/// <para>Returns ICERR\_OK if the specified decompression is supported or ICERR\_BADFORMAT otherwise.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompressex-query">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESSEX_QUERY = 16445U;
/// <summary>The ICM\_DECOMPRESSEX message notifies a video compression driver to decompress a frame of data directly to the screen, decompress to an upside-down DIB, or decompress images described with source and destination rectangles.</summary>
/// <returns>
/// <para><span id="icdex"></span><span id="ICDEX"></span>*icdex* Pointer to an [**ICDECOMPRESSEX**](/windows/desktop/api/Vfw/ns-vfw-icdecompressex) structure.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of [**ICDECOMPRESSEX**](/windows/desktop/api/Vfw/ns-vfw-icdecompressex).</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>
/// <para>This message is similar to [**ICM\_DECOMPRESS**](icm-decompress.md) except that it uses the [**ICDECOMPRESSEX**](/windows/desktop/api/Vfw/ns-vfw-icdecompressex) structure to define its decompression information. If you want the driver to decompress data directly to the screen, send the [**ICM\_DRAW**](icm-draw.md) message. The driver returns an error if this message is received before the [**ICM\_DECOMPRESSEX\_BEGIN**](icm-decompressex-begin.md) message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompressex#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESSEX = 16446U;
/// <summary>The ICM\_DECOMPRESSEX\_END message notifies a video decompression driver to end decompression and free resources allocated for decompression. You can send this message explicitly or by using the ICDecompressExEnd macro.</summary>
/// <returns>Returns ICERR\_OK if successful or an error otherwise.</returns>
/// <remarks>
/// <para>The driver frees any resources allocated for the [**ICM\_DECOMPRESSEX\_BEGIN**](icm-decompressex-begin.md) message. [**ICM\_DECOMPRESSEX\_BEGIN**](icm-decompressex-begin.md) and **ICM\_DECOMPRESSEX\_END** do not nest. If your driver receives **ICM\_DECOMPRESSEX\_BEGIN** before decompression is stopped with **ICM\_DECOMPRESSEX\_END**, it should restart decompression with new parameters.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-decompressex-end#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_DECOMPRESSEX_END = 16447U;
/// <summary>The ICM\_COMPRESS\_FRAMES\_INFO message notifies a compression driver to set the parameters for the pending compression.</summary>
/// <returns>
/// <para><span id="icf"></span><span id="ICF"></span>*icf* Pointer to an [**ICCOMPRESSFRAMES**](/windows/desktop/api/Vfw/ns-vfw-iccompressframes) structure. The **GetData** and **PutData** members of this structure are not used with this message.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of [**ICCOMPRESSFRAMES**](/windows/desktop/api/Vfw/ns-vfw-iccompressframes).</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>A compressor can use this message to determine how much space to allocate for each frame while compressing.</remarks>
internal const uint ICM_COMPRESS_FRAMES_INFO = 16454U;
internal const uint ICM_COMPRESS_FRAMES = 16455U;
/// <summary>The ICM\_SET\_STATUS\_PROC message provides a status callback function with the status of a lengthy operation.</summary>
/// <returns>
/// <para><span id="icsetstatusProc"></span><span id="icsetstatusproc"></span><span id="ICSETSTATUSPROC"></span>*icsetstatusProc* Pointer to an [**ICSETSTATUSPROC**](/windows/desktop/api/Vfw/ns-vfw-icsetstatusproc) structure.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Size, in bytes, of **ICSETSTATUSPROC**.</para>
/// <para>Returns ICERR\_OK if successful or an error otherwise.</para>
/// </returns>
/// <remarks>
/// <para>Support of this message is optional but strongly recommended if compression or decompression takes longer than approximately one-tenth of a second. An application can send this message periodically to a status callback function during lengthy operations.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Multimedia/icm-set-status-proc#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint ICM_SET_STATUS_PROC = 16456U;
internal const uint ICON_SMALL = 0U;
internal const uint ICON_BIG = 1U;
internal const uint ICON_SMALL2 = 2U;
internal const uint IDC_OLEUIHELP = 99U;
internal const uint IDC_IO_CREATENEW = 2100U;
internal const uint IDC_IO_CREATEFROMFILE = 2101U;
internal const uint IDC_IO_LINKFILE = 2102U;
internal const uint IDC_IO_OBJECTTYPELIST = 2103U;
internal const uint IDC_IO_DISPLAYASICON = 2104U;
internal const uint IDC_IO_CHANGEICON = 2105U;
internal const uint IDC_IO_FILE = 2106U;
internal const uint IDC_IO_FILEDISPLAY = 2107U;
internal const uint IDC_IO_RESULTIMAGE = 2108U;
internal const uint IDC_IO_RESULTTEXT = 2109U;
internal const uint IDC_IO_ICONDISPLAY = 2110U;
internal const uint IDC_IO_OBJECTTYPETEXT = 2111U;
internal const uint IDC_IO_FILETEXT = 2112U;
internal const uint IDC_IO_FILETYPE = 2113U;
internal const uint IDC_IO_INSERTCONTROL = 2114U;
internal const uint IDC_IO_ADDCONTROL = 2115U;
internal const uint IDC_IO_CONTROLTYPELIST = 2116U;
internal const uint IDC_PS_PASTE = 500U;
internal const uint IDC_PS_PASTELINK = 501U;
internal const uint IDC_PS_SOURCETEXT = 502U;
internal const uint IDC_PS_PASTELIST = 503U;
internal const uint IDC_PS_PASTELINKLIST = 504U;
internal const uint IDC_PS_DISPLAYLIST = 505U;
internal const uint IDC_PS_DISPLAYASICON = 506U;
internal const uint IDC_PS_ICONDISPLAY = 507U;
internal const uint IDC_PS_CHANGEICON = 508U;
internal const uint IDC_PS_RESULTIMAGE = 509U;
internal const uint IDC_PS_RESULTTEXT = 510U;
internal const uint IDC_CI_GROUP = 120U;
internal const uint IDC_CI_CURRENT = 121U;
internal const uint IDC_CI_CURRENTICON = 122U;
internal const uint IDC_CI_DEFAULT = 123U;
internal const uint IDC_CI_DEFAULTICON = 124U;
internal const uint IDC_CI_FROMFILE = 125U;
internal const uint IDC_CI_FROMFILEEDIT = 126U;
internal const uint IDC_CI_ICONLIST = 127U;
internal const uint IDC_CI_LABEL = 128U;
internal const uint IDC_CI_LABELEDIT = 129U;
internal const uint IDC_CI_BROWSE = 130U;
internal const uint IDC_CI_ICONDISPLAY = 131U;
internal const uint IDC_CV_OBJECTTYPE = 150U;
internal const uint IDC_CV_DISPLAYASICON = 152U;
internal const uint IDC_CV_CHANGEICON = 153U;
internal const uint IDC_CV_ACTIVATELIST = 154U;
internal const uint IDC_CV_CONVERTTO = 155U;
internal const uint IDC_CV_ACTIVATEAS = 156U;
internal const uint IDC_CV_RESULTTEXT = 157U;
internal const uint IDC_CV_CONVERTLIST = 158U;
internal const uint IDC_CV_ICONDISPLAY = 165U;
internal const uint IDC_EL_CHANGESOURCE = 201U;
internal const uint IDC_EL_AUTOMATIC = 202U;
internal const uint IDC_EL_CANCELLINK = 209U;
internal const uint IDC_EL_UPDATENOW = 210U;
internal const uint IDC_EL_OPENSOURCE = 211U;
internal const uint IDC_EL_MANUAL = 212U;
internal const uint IDC_EL_LINKSOURCE = 216U;
internal const uint IDC_EL_LINKTYPE = 217U;
internal const uint IDC_EL_LINKSLISTBOX = 206U;
internal const uint IDC_EL_COL1 = 220U;
internal const uint IDC_EL_COL2 = 221U;
internal const uint IDC_EL_COL3 = 222U;
internal const uint IDC_BZ_RETRY = 600U;
internal const uint IDC_BZ_ICON = 601U;
internal const uint IDC_BZ_MESSAGE1 = 602U;
internal const uint IDC_BZ_SWITCHTO = 604U;
internal const uint IDC_UL_METER = 1029U;
internal const uint IDC_UL_STOP = 1030U;
internal const uint IDC_UL_PERCENT = 1031U;
internal const uint IDC_UL_PROGRESS = 1032U;
internal const uint IDC_PU_LINKS = 900U;
internal const uint IDC_PU_TEXT = 901U;
internal const uint IDC_PU_CONVERT = 902U;
internal const uint IDC_PU_ICON = 908U;
internal const uint IDC_GP_OBJECTNAME = 1009U;
internal const uint IDC_GP_OBJECTTYPE = 1010U;
internal const uint IDC_GP_OBJECTSIZE = 1011U;
internal const uint IDC_GP_CONVERT = 1013U;
internal const uint IDC_GP_OBJECTICON = 1014U;
internal const uint IDC_GP_OBJECTLOCATION = 1022U;
internal const uint IDC_VP_PERCENT = 1000U;
internal const uint IDC_VP_CHANGEICON = 1001U;
internal const uint IDC_VP_EDITABLE = 1002U;
internal const uint IDC_VP_ASICON = 1003U;
internal const uint IDC_VP_RELATIVE = 1005U;
internal const uint IDC_VP_SPIN = 1006U;
internal const uint IDC_VP_SCALETXT = 1034U;
internal const uint IDC_VP_ICONDISPLAY = 1021U;
internal const uint IDC_VP_RESULTIMAGE = 1033U;
internal const uint IDC_LP_OPENSOURCE = 1006U;
internal const uint IDC_LP_UPDATENOW = 1007U;
internal const uint IDC_LP_BREAKLINK = 1008U;
internal const uint IDC_LP_LINKSOURCE = 1012U;
internal const uint IDC_LP_CHANGESOURCE = 1015U;
internal const uint IDC_LP_AUTOMATIC = 1016U;
internal const uint IDC_LP_MANUAL = 1017U;
internal const uint IDC_LP_DATE = 1018U;
internal const uint IDC_LP_TIME = 1019U;
internal const uint IDC_MANAGE_LINK = 1592U;
internal const uint IDC_OFFLINE_HAND = 103U;
internal const uint IDC_PANTOOL_HAND_OPEN = 104U;
internal const uint IDC_PANTOOL_HAND_CLOSED = 105U;
/// <summary>Standard arrow cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_ARROW = (char*)(32512);
/// <summary>I-beam cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_IBEAM = (char*)(32513);
/// <summary>Hourglass cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_WAIT = (char*)(32514);
/// <summary>Crosshair cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_CROSS = (char*)(32515);
/// <summary>Vertical arrow cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_UPARROW = (char*)(32516);
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_SIZE = (char*)(32640);
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_ICON = (char*)(32641);
/// <summary>Double-pointed arrow cursor pointing northwest and southeast.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_SIZENWSE = (char*)(32642);
/// <summary>Double-pointed arrow cursor pointing northeast and southwest.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_SIZENESW = (char*)(32643);
/// <summary>Double-pointed arrow cursor pointing west and east.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_SIZEWE = (char*)(32644);
/// <summary>Double-pointed arrow cursor pointing north and south.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_SIZENS = (char*)(32645);
/// <summary>Four-pointed arrow cursor pointing north, south, east, and west.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_SIZEALL = (char*)(32646);
/// <summary>Slashed circle cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_NO = (char*)(32648);
/// <summary>Hand cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_HAND = (char*)(32649);
/// <summary>Standard arrow and small hourglass cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_APPSTARTING = (char*)(32650);
/// <summary>Arrow and question mark cursor.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-geticoninfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_HELP = (char*)(32651);
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_PIN = (char*)(32671);
internal static readonly unsafe winmdroot.Foundation.PCWSTR IDC_PERSON = (char*)(32672);
internal const int IDC_STATIC = -1;
/// <summary>Documentation varies per use. Refer to each: <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnconnectioncontextevents-onsetprovisionedcontextcomplete">IMbnConnectionContextEvents.OnSetProvisionedContextComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnconnectionevents-onconnectcomplete">IMbnConnectionEvents.OnConnectComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-onchangecomplete">IMbnPinEvents.OnChangeComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-ondisablecomplete">IMbnPinEvents.OnDisableComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-onenablecomplete">IMbnPinEvents.OnEnableComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-onentercomplete">IMbnPinEvents.OnEnterComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinevents-onunblockcomplete">IMbnPinEvents.OnUnblockComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnpinmanagerevents-ongetpinstatecomplete">IMbnPinManagerEvents.OnGetPinStateComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnradioevents-onsetsoftwareradiostatecomplete">IMbnRadioEvents.OnSetSoftwareRadioStateComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnserviceactivationevents-onactivationcomplete">IMbnServiceActivationEvents.OnActivationComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnsmsevents-onsetsmsconfigurationcomplete">IMbnSmsEvents.OnSetSmsConfigurationComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnsmsevents-onsmsdeletecomplete">IMbnSmsEvents.OnSmsDeleteComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnsmsevents-onsmsreadcomplete">IMbnSmsEvents.OnSmsReadComplete</see>, <see href="https://learn.microsoft.com/windows/win32/api/mbnapi/nf-mbnapi-imbnsmsevents-onsmssendcomplete">IMbnSmsEvents.OnSmsSendComplete</see>.</summary>
internal static readonly winmdroot.Foundation.HRESULT S_OK = (winmdroot.Foundation.HRESULT)(0);
/// <summary>Notifies an application when an IME is about to close the status window. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_CLOSESTATUSWINDOW.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>
/// <para>An application should process this command if it displays the status window for the IME. The IME window closes the status window when it processes this command.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Intl/imn-closestatuswindow#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint IMN_CLOSESTATUSWINDOW = 1U;
/// <summary>Notifies an application when an IME is about to create the status window. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_OPENSTATUSWINDOW.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>
/// <para>An application processes this command to display the status window for the IME by itself. The IME window creates a status window when it processes this command and sets the strings to display in the window into the input context. Applications can get information about the status window by using the [**ImmGetConversionStatus**](/windows/desktop/api/Imm/nf-imm-immgetconversionstatus) function.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Intl/imn-openstatuswindow#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint IMN_OPENSTATUSWINDOW = 2U;
/// <summary>Notifies the application when an IME is about to change the content of the candidate window. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_CHANGECANDIDATE.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Candidate list flag. Each bit corresponds to a candidate list: bit 0 to the first list, bit 1 to the second list, and so on. If a specified bit is 1, the corresponding candidate window is about to be changed.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>
/// <para>An application should process this command if it displays candidates itself. The IME window changes the appearance of the candidate window when it processes this command. An application can get information about the system window with the [**ImmGetCandidateListCount**](/windows/desktop/api/Imm/nf-imm-immgetcandidatelistcounta) and [**ImmGetCandidateList**](/windows/desktop/api/Imm/nf-imm-immgetcandidatelista)</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Intl/imn-changecandidate#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint IMN_CHANGECANDIDATE = 3U;
/// <summary>Notifies an application when an IME is about to close the candidates window. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_CLOSECANDIDATE.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Candidate list flag. Each bit corresponds to a candidate list: bit 0 to the first list, bit 1 to the second, and so on. If a specified bit is 1, the corresponding candidates window is about to be closed.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>
/// <para>An application should process this command if it displays candidates itself. By default, the IME window destroys a candidate window when it processes this command.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Intl/imn-closecandidate#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint IMN_CLOSECANDIDATE = 4U;
/// <summary>Notifies an application when an IME is about to open the candidate window. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_OPENCANDIDATE.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Candidate list flag. Each bit corresponds to a candidate list: bit 0 to the first list, bit 1 to the second, and so on. If a specified bit is 1, the corresponding candidate window is about to be opened.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>
/// <para>An application should process this command if it displays candidates itself. The application can retrieve a list of candidates to display by using the [**ImmGetCandidateList**](/windows/desktop/api/Imm/nf-imm-immgetcandidatelista) function. By default, the IME window creates a candidate window when it processes this command.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Intl/imn-opencandidate#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint IMN_OPENCANDIDATE = 5U;
/// <summary>Notifies an application when the conversion mode of the input context is updated. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_SETCONVERSIONMODE.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>The application can get information about the conversion mode by using the [**ImmGetConversionStatus**](/windows/desktop/api/Imm/nf-imm-immgetconversionstatus) function.</remarks>
internal const uint IMN_SETCONVERSIONMODE = 6U;
/// <summary>Notifies an application when the sentence mode of the input context is updated. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_SETSENTENCEMODE.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>The application can get information about the sentence mode by using the [**ImmGetConversionStatus**](/windows/desktop/api/Imm/nf-imm-immgetconversionstatus) function.</remarks>
internal const uint IMN_SETSENTENCEMODE = 7U;
/// <summary>Notifies an application when the open status of the input context is updated. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_SETOPENSTATUS.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>The application can get information about the open status by using the [**ImmGetOpenStatus**](/windows/desktop/api/Imm/nf-imm-immgetopenstatus) function.</remarks>
internal const uint IMN_SETOPENSTATUS = 8U;
/// <summary>Notifies an application when candidate processing has finished and the IME is about to move the candidate window. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_SETCANDIDATEPOS.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Candidate list flag. Each bit corresponds to a candidate list: bit 0 to the first list, bit 1 to the second, and so on. If a specified bit is 1, the corresponding candidate window is about to be moved.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>
/// <para>An application should process this command if it displays the candidate window itself. The IME window moves the candidate window when it processes this command.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Intl/imn-setcandidatepos#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint IMN_SETCANDIDATEPOS = 9U;
/// <summary>Notifies an application when the font of the input context is updated. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_SETCOMPOSITIONFONT.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>The application can get information about the font by using the [**ImmGetCompositionFont**](/windows/desktop/api/Imm/nf-imm-immgetcompositionfonta) function. The IME window subsequently uses the font to draw the composition string.</remarks>
internal const uint IMN_SETCOMPOSITIONFONT = 10U;
/// <summary>Notifies an application when the style or position of the composition window is updated. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_SETCOMPOSITIONWINDOW.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>The application can get information about the composition form by using the [**IMC\_GETCOMPOSITIONWINDOW**](imc-getcompositionwindow.md) command.</remarks>
internal const uint IMN_SETCOMPOSITIONWINDOW = 11U;
/// <summary>Notifies an application when the status window position in the input context is updated. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as follows.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_SETSTATUSWINDOWPOS.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>The application can get information about the status window position by using the [**IMC\_GETSTATUSWINDOWPOS**](imc-getstatuswindowpos.md) command.</remarks>
internal const uint IMN_SETSTATUSWINDOWPOS = 12U;
/// <summary>Notifies an application when an IME is about to show an error message or other information. The application receives this command through the WM\_IME\_NOTIFY message with parameter settings as shown below.</summary>
/// <returns>
/// <para><span id="wParam"></span><span id="wparam"></span><span id="WPARAM"></span>*wParam* Set to IMN\_GUIDELINE.</para>
/// <para><span id="lParam"></span><span id="lparam"></span><span id="LPARAM"></span>*lParam* Not used.</para>
/// <para>This command has no return value.</para>
/// </returns>
/// <remarks>
/// <para>An application processes this command by calling the [**ImmGetGuideLine**](/windows/desktop/api/Imm/nf-imm-immgetguidelinea) function to retrieve the error message or information from the IME. The IME window displays the error message or information string in an information window.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Intl/imn-guideline#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint IMN_GUIDELINE = 13U;
internal const uint IMN_PRIVATE = 14U;
internal const uint IMN_SOFTKBDDESTROYED = 17U;
internal const uint KF_EXTENDED = 256U;
internal const uint KF_DLGMODE = 2048U;
internal const uint KF_MENUMODE = 4096U;
internal const uint KF_ALTDOWN = 8192U;
internal const uint KF_REPEAT = 16384U;
internal const uint KF_UP = 32768U;
internal const int LB_CTLCODE = 0;
internal const uint LB_OKAY = 0U;
internal const int LB_ERR = -1;
internal const int LB_ERRSPACE = -2;
/// <summary>Adds a string to a list box. If the list box does not have the LBS\_SORT style, the string is added to the end of the list. Otherwise, the string is inserted into the list and the list is sorted.</summary>
/// <returns>The return value is the zero-based index of the string in the list box. If an error occurs, the return value is LB\_ERR. If there is insufficient space to store the new string, the return value is LB\_ERRSPACE.</returns>
/// <remarks>
/// <para>If the list box has an owner-drawn style and the [**LBS\_SORT**](list-box-styles.md) style, but not the [**LBS\_HASSTRINGS**](list-box-styles.md) style, the system sends the [**WM\_COMPAREITEM**](wm-compareitem.md) message one or more times to the owner of the list box to place the new item properly in the list box. The [**LB\_INITSTORAGE**](lb-initstorage.md) message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent **LB\_ADDSTRING** messages take the shortest possible time. You can use estimates for the *wParam* and *lParam* parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount. If the list box has the [**WS\_HSCROLL**](/windows/desktop/winmsg/window-styles) style and you add a string wider than the list box, send an [**LB\_SETHORIZONTALEXTENT**](lb-sethorizontalextent.md) message to ensure the horizontal scroll bar appears. For an ANSI application, the system converts the text in a list box to Unicode using CP\_ACP. This can cause problems. For example, accented Roman characters in a non-Unicode list box in Japanese Windows will come out garbled. To fix this, either compile the application as Unicode or use an owner-drawn list box.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-addstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_ADDSTRING = 384U;
/// <summary>Inserts a string or item data into a list box. Unlike the LB\_ADDSTRING message, the LB\_INSERTSTRING message does not cause a list with the LBS\_SORT style to be sorted.</summary>
/// <returns>The return value is the index of the position at which the string was inserted. If an error occurs, the return value is LB\_ERR. If there is insufficient space to store the new string, the return value is LB\_ERRSPACE.</returns>
/// <remarks>
/// <para>The [**LB\_INITSTORAGE**](lb-initstorage.md) message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent **LB\_INSERTSTRING** messages take the shortest possible time. You can use estimates for the *wParam* and *lParam* parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount. If the list box has [**WS\_HSCROLL**](/windows/desktop/winmsg/window-styles) style and you insert a string wider than the list box, send an [**LB\_SETHORIZONTALEXTENT**](lb-sethorizontalextent.md) message to ensure the horizontal scroll bar appears. For an ANSI application, the system converts the text in a list box to Unicode using CP\_ACP. This can cause problems. For example, accented Roman characters in a non-Unicode list box in Japanese Windows will come out garbled. To fix this, either compile the application as Unicode or use an owner-drawn list box.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-insertstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_INSERTSTRING = 385U;
/// <summary>Deletes a string in a list box.</summary>
/// <returns>The return value is a count of the strings remaining in the list. The return value is LB\_ERR if the *wParam* parameter specifies an index greater than the number of items in the list.</returns>
/// <remarks>If an application creates the list box with an owner-drawn style but without the [**LBS\_HASSTRINGS**](list-box-styles.md) style, the system sends a [**WM\_DELETEITEM**](wm-deleteitem.md) message to the owner of the list box so the application can free any additional data associated with the item.</remarks>
internal const uint LB_DELETESTRING = 386U;
/// <summary>Selects one or more consecutive items in a multiple-selection list box.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR.</returns>
/// <remarks>
/// <para>If the *wParam* parameter is less than the *lParam* parameter, the specified range of items is selected. If *wParam* is greater than or equal to *lParam*, the range is removed from the specified range of items. To select only one item, select two items and then deselect the unwanted item. Use this message only with multiple-selection list boxes. This message can select a range only within the first 65,536 items.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-selitemrangeex#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_SELITEMRANGEEX = 387U;
/// <summary>Removes all items from a list box.</summary>
/// <returns>This message does not return a value.</returns>
/// <remarks>If the list box has an owner-drawn style but not the [**LBS\_HASSTRINGS**](list-box-styles.md) style, the owner of the list box receives a [**WM\_DELETEITEM**](wm-deleteitem.md) message for each item in the list box.</remarks>
internal const uint LB_RESETCONTENT = 388U;
/// <summary>Selects an item in a multiple-selection list box and, if necessary, scrolls the item into view.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR.</returns>
/// <remarks>Use this message only with multiple-selection list boxes.</remarks>
internal const uint LB_SETSEL = 389U;
/// <summary>Selects a string and scrolls it into view, if necessary. When the new string is selected, the list box removes the highlight from the previously selected string.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR. If the *wParam* parameter is -1, the return value is LB\_ERR even though no error occurred.</returns>
/// <remarks>Use this message only with single-selection list boxes. You cannot use it to set or remove a selection in a multiple-selection list box.</remarks>
internal const uint LB_SETCURSEL = 390U;
/// <summary>Gets the selection state of an item.</summary>
/// <returns>If an item is selected, the return value is greater than zero; otherwise, it is zero. If an error occurs, the return value is LB\_ERR.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-getsel">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETSEL = 391U;
/// <summary>Gets the index of the currently selected item, if any, in a single-selection list box.</summary>
/// <returns>In a single-selection list box, the return value is the zero-based index of the currently selected item. If there is no selection, the return value is LB\_ERR.</returns>
/// <remarks>
/// <para>To retrieve the indexes of the selected items in a multiple-selection list box, use the [**LB\_GETSELITEMS**](lb-getselitems.md) message. To determine whether the item that has the focus rectangle in a multiple selection list box is selected, use the [**LB\_GETSEL**](lb-getsel.md) message. If sent to a multiple-selection list box, **LB\_GETCURSEL** returns the index of the item that has the focus rectangle. If no items are selected, it returns zero.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-getcursel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETCURSEL = 392U;
/// <summary>Gets a string from a list box.</summary>
/// <returns>The return value is the length of the string, in **TCHAR**s, excluding the terminating null character. If *wParam* does not specify a valid index, the return value is LB\_ERR.</returns>
/// <remarks>If the list box has an owner-drawn style but not the [**LBS\_HASSTRINGS**](list-box-styles.md) style, the buffer pointed to by the *lParam* parameter receives the value associated with the item (the item data).</remarks>
internal const uint LB_GETTEXT = 393U;
/// <summary>Gets the length of a string in a list box.</summary>
/// <returns>
/// <para>The return value is the length of the string, in **TCHAR**s, excluding the terminating null character. Under certain conditions, this value may actually be greater than the length of the text. For more information, see the following Remarks section. If the *wParam* parameter does not specify a valid index, the return value is LB\_ERR.</para>
/// </returns>
/// <remarks>
/// <para>Under certain conditions, the return value is larger than the actual length of the text. This occurs with certain mixtures of ANSI and Unicode, and is due to the operating system allowing for the possible existence of double-byte character set (DBCS) characters within the text. The return value, however, will always be at least as large as the actual length of the text; you can thus always use it to guide buffer allocation. This behavior can occur when an application uses both ANSI functions and common dialogs, which use Unicode. To obtain the exact length of the text, use the [**WM\_GETTEXT**](/windows/desktop/winmsg/wm-gettext), [**LB\_GETTEXT**](lb-gettext.md), or [**CB\_GETLBTEXT**](cb-getlbtext.md) messages, or the [**GetWindowText**](/windows/desktop/api/winuser/nf-winuser-getwindowtexta) function. If the list box has an owner-drawn style, but not the [**LBS\_HASSTRINGS**](list-box-styles.md) style, the return value is always the size, in bytes, of a **DWORD**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-gettextlen#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETTEXTLEN = 394U;
/// <summary>Gets the number of items in a list box.</summary>
/// <returns>The return value is the number of items in the list box, or LB\_ERR if an error occurs.</returns>
/// <remarks>The returned count is one greater than the index value of the last item (the index is zero-based).</remarks>
internal const uint LB_GETCOUNT = 395U;
/// <summary>Searches a list box for an item that begins with the characters in a specified string. If a matching item is found, the item is selected.</summary>
/// <returns>If the search is successful, the return value is the index of the selected item. If the search is unsuccessful, the return value is LB\_ERR and the current selection is not changed.</returns>
/// <remarks>
/// <para>The list box is scrolled, if necessary, to bring the selected item into view. Do not use this message with a list box that has the [**LBS\_MULTIPLESEL**](list-box-styles.md) or the [**LBS\_EXTENDEDSEL**](list-box-styles.md) styles. An item is selected only if its initial characters from the starting point match the characters in the string specified by the *lParam* parameter. If the list box has the owner-drawn style but not the [**LBS\_HASSTRINGS**](list-box-styles.md) style, the action taken by **LB\_SELECTSTRING** depends on whether the [**LBS\_SORT**](list-box-styles.md) style is used. If **LBS\_SORT** is used, the system sends [**WM\_COMPAREITEM**](wm-compareitem.md) messages to the list box owner to determine which item matches the specified string. Otherwise, **LB\_SELECTSTRING** attempts to find an item that has a long value (supplied as the *lParam* parameter of the [**LB\_ADDSTRING**](lb-addstring.md) or [**LB\_INSERTSTRING**](lb-insertstring.md) message) that matches the *lParam* parameter.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-selectstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_SELECTSTRING = 396U;
/// <summary>Adds names to the list displayed by a list box. The message adds the names of directories and files that match a specified string and set of file attributes. LB\_DIR can also add mapped drive letters to the list box.</summary>
/// <returns>
/// <para>If the message succeeds, the return value is the zero-based index of the last name added to the list. If an error occurs, the return value is LB\_ERR. If there is insufficient space to store the new strings, the return value is LB\_ERRSPACE.</para>
/// </returns>
/// <remarks>
/// <para>The [**LB\_INITSTORAGE**](lb-initstorage.md) message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent **LB\_DIR** messages take the shortest possible time. You can use estimates for the *wParam* and *lParam* parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount. If *wParam* includes the DDL\_DIRECTORY flag and *lParam* specifies all the subdirectories of a first-level directory, such as C:\\TEMP\\\*, the list box will always include a ".." entry for the root directory. This is true even if the root directory has hidden or system attributes and the DDL\_HIDDEN and DDL\_SYSTEM flags are not specified. The root directory of an NTFS volume has hidden and system attributes. The list displays long filenames, if any. For an ANSI application, the system converts the text in a list box to Unicode using CP\_ACP. This can cause problems. For example, accented Roman characters in a non-Unicode list box in Japanese Windows will come out garbled. To fix this, either compile the application as Unicode or use an owner-drawn list box.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-dir#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_DIR = 397U;
/// <summary>Gets the index of the first visible item in a list box.</summary>
/// <returns>The return value is the index of the first visible item in the list box.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-gettopindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETTOPINDEX = 398U;
/// <summary>Finds the first string in a list box that begins with the specified string.</summary>
/// <returns>The return value is the index of the matching item, or LB\_ERR if the search was unsuccessful.</returns>
/// <remarks>If the list box has the owner-drawn style but not the [**LBS\_HASSTRINGS**](list-box-styles.md) style, the action taken by **LB\_FINDSTRING** depends on whether the [**LBS\_SORT**](list-box-styles.md) style is used. If **LBS\_SORT** is used, the system sends [**WM\_COMPAREITEM**](wm-compareitem.md) messages to the list box owner to determine which item matches the specified string. Otherwise, **LB\_FINDSTRING** attempts to find an item that has a long value (supplied as the *lParam* parameter of the [**LB\_ADDSTRING**](lb-addstring.md) or [**LB\_INSERTSTRING**](lb-insertstring.md) message) that matches the *lParam* parameter.</remarks>
internal const uint LB_FINDSTRING = 399U;
/// <summary>Gets the total number of selected items in a multiple-selection list box.</summary>
/// <returns>The return value is the count of selected items in the list box. If the list box is a single-selection list box, the return value is LB\_ERR.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-getselcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETSELCOUNT = 400U;
/// <summary>Fills a buffer with an array of integers that specify the item numbers of selected items in a multiple-selection list box.</summary>
/// <returns>The return value is the number of items placed in the buffer. If the list box is a single-selection list box, the return value is LB\_ERR.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-getselitems">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETSELITEMS = 401U;
/// <summary>Sets the tab-stop positions in a list box.</summary>
/// <returns>If all the specified tabs are set, the return value is **TRUE**; otherwise, it is **FALSE**.</returns>
/// <remarks>
/// <para>To respond to the **LB\_SETTABSTOPS** message, the list box must have been created with the [**LBS\_USETABSTOPS**](list-box-styles.md) style. If *wParam* is 0 and *lParam* is **NULL**, the default tab stop is two dialog template units. If *wParam* is 1, the list box will have tab stops separated by the distance specified by *lParam*. If *lParam* points to more than a single value, a tab stop will be set for each value in *lParam*, up to the number specified by *wParam*. The values specified by *lParam* are in dialog template units, which are the device-independent units used in dialog box templates. To convert measurements from dialog template units to screen units (pixels), use the [**MapDialogRect**](/windows/desktop/api/winuser/nf-winuser-mapdialogrect) function. Windows 95/Windows 98/Windows Millennium Edition (Windows Me) : The buffer pointed to by *lParam* must reside in writable memory, even though the message does not modify the array.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-settabstops#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_SETTABSTOPS = 402U;
/// <summary>Gets the width, in pixels, that a list box can be scrolled horizontally (the scrollable width) if the list box has a horizontal scroll bar.</summary>
/// <returns>The return value is the scrollable width, in pixels, of the list box.</returns>
/// <remarks>
/// <para>To respond to the **LB\_GETHORIZONTALEXTENT** message, the list box must have been defined with the [**WS\_HSCROLL**](/windows/desktop/winmsg/window-styles) style. If the application does not set the horizontal extent of the list box (using [**LB\_SETHORIZONTALEXTENT**](lb-sethorizontalextent.md)), the default horizontal extent is zero. Note that the list box does not update its horizontal extent dynamically.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-gethorizontalextent#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETHORIZONTALEXTENT = 403U;
/// <summary>Sets the width, in pixels, by which a list box can be scrolled horizontally (the scrollable width).</summary>
/// <returns>This message does not return a value.</returns>
/// <remarks>
/// <para>To respond to the **LB\_SETHORIZONTALEXTENT** message, the list box must have been defined with the [**WS\_HSCROLL**](/windows/desktop/winmsg/window-styles) style. Note that a list box does not update its horizontal extent dynamically. This message has no effect on a multiple-column list box.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-sethorizontalextent#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_SETHORIZONTALEXTENT = 404U;
/// <summary>Sets the width, in pixels, of all columns in a multiple-column list box.</summary>
/// <returns>This message does not return a value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-setcolumnwidth">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_SETCOLUMNWIDTH = 405U;
/// <summary>Adds the specified filename to a list box that contains a directory listing.</summary>
/// <returns>The return value is the zero-based index of the file that was added, or LB\_ERR if an error occurs.</returns>
/// <remarks>
/// <para>The list box to which *lParam* is added must have been filled by the [**DlgDirList**](/windows/desktop/api/Winuser/nf-winuser-dlgdirlista) function. The [**LB\_INITSTORAGE**](lb-initstorage.md) message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent **LB\_ADDFILE** messages take the shortest possible time. You can use estimates for the *wParam* and *lParam* parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount. For an ANSI application, the system converts the text in a list box to Unicode using CP\_ACP. This can cause problems. For example, accented Roman characters in a non-Unicode list box in Japanese Windows will come out garbled. To fix this, either compile the application as Unicode or use an owner-drawn list box.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-addfile#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_ADDFILE = 406U;
/// <summary>Ensures that the specified item in a list box is visible.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR.</returns>
/// <remarks>The system scrolls the list box contents so that either the specified item appears at the top of the list box or the maximum scroll range has been reached.</remarks>
internal const uint LB_SETTOPINDEX = 407U;
/// <summary>Gets the dimensions of the rectangle that bounds a list box item as it is currently displayed in the list box.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-getitemrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETITEMRECT = 408U;
/// <summary>Gets the application-defined value associated with the specified list box item.</summary>
/// <returns>The return value is the value associated with the item, or LB\_ERR if an error occurs. If the item is in an owner-drawn list box and was created without the [**LBS\_HASSTRINGS**](list-box-styles.md) style, this value was in the *lParam* parameter of the [**LB\_ADDSTRING**](lb-addstring.md) or [**LB\_INSERTSTRING**](lb-insertstring.md) message that added the item to the list box. Otherwise, it is the value in the *lParam* of the [**LB\_SETITEMDATA**](lb-setitemdata.md) message.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-getitemdata">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETITEMDATA = 409U;
/// <summary>Sets a value associated with the specified item in a list box.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR.</returns>
/// <remarks>If the item is in an owner-drawn list box created without the [**LBS\_HASSTRINGS**](list-box-styles.md) style, this message replaces the value contained in the *lParam* parameter of the [**LB\_ADDSTRING**](lb-addstring.md) or [**LB\_INSERTSTRING**](lb-insertstring.md) message that added the item to the list box.</remarks>
internal const uint LB_SETITEMDATA = 410U;
/// <summary>Selects or deselects one or more consecutive items in a multiple-selection list box.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR.</returns>
/// <remarks>
/// <para>Use this message only with multiple-selection list boxes. This message can select a range only within the first 65,536 items.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-selitemrange#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_SELITEMRANGE = 411U;
/// <summary>Sets the anchor item \ 8212;that is, the item from which a multiple selection starts. A multiple selection spans all items from the anchor item to the caret item.</summary>
/// <returns>
/// <para>If the message succeeds, the return value is zero. If the message fails, the return value is LB\_ERR.</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-setanchorindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_SETANCHORINDEX = 412U;
/// <summary>Gets the index of the anchor item \ 8212;that is, the item from which a multiple selection starts. A multiple selection spans all items from the anchor item to the caret item.</summary>
/// <returns>The return value is the index of the anchor item.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-getanchorindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETANCHORINDEX = 413U;
/// <summary>Sets the focus rectangle to the item at the specified index in a multiple-selection list box. If the item is not visible, it is scrolled into view.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR (-1). Otherwise, LB\_OKAY (0) is returned.</returns>
/// <remarks>If this message is sent to a single-selection list box that does not contain a selected item, the caret index is set to the item specified by the *wParam* parameter. If the single-selection list box does contain a selected item, the list box returns LB\_ERR.</remarks>
internal const uint LB_SETCARETINDEX = 414U;
/// <summary>Retrieves the index of the item that has the focus in a multiple-selection list box. The item may or may not be selected.</summary>
/// <returns>The return value is the zero-based index of the focused list box item, or 0 if no item has the focus.</returns>
/// <remarks>This message can also be used to get the index of the item that is currently selected in a single-selection list box.</remarks>
internal const uint LB_GETCARETINDEX = 415U;
/// <summary>Sets the height, in pixels, of items in a list box. If the list box has the LBS\_OWNERDRAWVARIABLE style, this message sets the height of the item specified by the wParam parameter. Otherwise, this message sets the height of all items in the list box.</summary>
/// <returns>If the index or height is invalid, the return value is LB\_ERR.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-setitemheight">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_SETITEMHEIGHT = 416U;
/// <summary>Gets the height of items in a list box.</summary>
/// <returns>The return value is the height, in pixels, of each item in the list box. The return value is the height of the item specified by the *wParam* parameter if the list box has the [**LBS\_OWNERDRAWVARIABLE**](list-box-styles.md) style. The return value is LB\_ERR if an error occurs.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-getitemheight">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_GETITEMHEIGHT = 417U;
/// <summary>Finds the first list box string that exactly matches the specified string, except that the search is not case sensitive.</summary>
/// <returns>The return value is the zero-based index of the matching item, or LB\_ERR if the search was unsuccessful.</returns>
/// <remarks>
/// <para>This function is only successful if the specified string and a list box item have the same length (except for the null at the end of the specified string) and have exactly the same characters. If the list box has the owner-drawn style but not the [**LBS\_HASSTRINGS**](list-box-styles.md) style, the action taken by **LB\_FINDSTRINGEXACT** depends on whether the [**LBS\_SORT**](list-box-styles.md) style is used. If **LBS\_SORT** is used, the system sends [**WM\_COMPAREITEM**](wm-compareitem.md) messages to the list box owner to determine which item matches the specified string. Otherwise, **LB\_FINDSTRINGEXACT** attempts to find an item that has a long value (supplied as the *lParam* parameter of the [**LB\_ADDSTRING**](lb-addstring.md) or [**LB\_INSERTSTRING**](lb-insertstring.md) message) that matches the *lParam* parameter.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-findstringexact#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_FINDSTRINGEXACT = 418U;
/// <summary>Sets the current locale of the list box. You can use the locale to determine the correct sorting order of displayed text (for list boxes with the LBS\_SORT style) and of text added by the LB\_ADDSTRING message.</summary>
/// <returns>The return value is the previous locale identifier. If the *wParam* parameter specifies a locale that is not installed on the system, the return value is LB\_ERR and the current list box locale is not changed.</returns>
/// <remarks>Use the [**MAKELCID**](/windows/desktop/api/winnt/nf-winnt-makelcid) macro to construct a locale identifier.</remarks>
internal const uint LB_SETLOCALE = 421U;
/// <summary>Gets the current locale of the list box. You can use the locale to determine the correct sorting order of displayed text (for list boxes with the LBS\_SORT style) and of text added by the LB\_ADDSTRING message.</summary>
/// <returns>The return value specifies the current locale of the list box. The [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)) contains the country/region code and the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) contains the language identifier.</returns>
/// <remarks>The language identifier consists of a sublanguage identifier and a primary language identifier. Use the [**PRIMARYLANGID**](/windows/desktop/api/winnt/nf-winnt-primarylangid) macro to extract the primary language identifier from the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) of the return value, and the [**SUBLANGID**](/windows/desktop/api/winnt/nf-winnt-sublangid) macro to extract the sublanguage identifier.</remarks>
internal const uint LB_GETLOCALE = 422U;
/// <summary>Sets the count of items in a list box created with the LBS\_NODATA style and not created with the LBS\_HASSTRINGS style.</summary>
/// <returns>If an error occurs, the return value is LB\_ERR. If there is insufficient memory to store the items, the return value is LB\_ERRSPACE.</returns>
/// <remarks>The **LB\_SETCOUNT** message is supported only by list boxes created with the [**LBS\_NODATA**](list-box-styles.md) style and not created with the [**LBS\_HASSTRINGS**](list-box-styles.md) style. All other list boxes return LB\_ERR.</remarks>
internal const uint LB_SETCOUNT = 423U;
/// <summary>Allocates memory for storing list box items. This message is used before an application adds a large number of items to a list box.</summary>
/// <returns>
/// <para>If the message is successful, the return value is the total number of items for which memory has been pre-allocated, that is, the total number of items added by all successful **LB\_INITSTORAGE** messages. If the message fails, the return value is LB\_ERRSPACE. Microsoft Windows NT 4.0 : This message does not allocate the specified amount of memory; however, it always returns the value specified in the *wParam* parameter.</para>
/// </returns>
/// <remarks>The **LB\_INITSTORAGE** message helps speed up the initialization of list boxes that have a large number of items (more than 100). It reserves the specified amount of memory so that subsequent [**LB\_ADDSTRING**](lb-addstring.md), [**LB\_INSERTSTRING**](lb-insertstring.md), [**LB\_DIR**](lb-dir.md), and [**LB\_ADDFILE**](lb-addfile.md) messages take the shortest possible time. You can use estimates for the *wParam* and *lParam* parameters. If you overestimate, the extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the requested amount.</remarks>
internal const uint LB_INITSTORAGE = 424U;
/// <summary>Gets the zero-based index of the item nearest the specified point in a list box.</summary>
/// <returns>The return value contains the index of the nearest item in the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)). The [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)) is zero if the specified point is in the client area of the list box, or one if it is outside the client area.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lb-itemfrompoint">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LB_ITEMFROMPOINT = 425U;
internal const uint LB_MULTIPLEADDSTRING = 433U;
/// <summary>Gets the number of items per column in a specified list box.</summary>
/// <returns>The return value is the number of items per column.</returns>
/// <remarks>This message is equivalent to [**GetListBoxInfo**](/windows/desktop/api/Winuser/nf-winuser-getlistboxinfo).</remarks>
internal const uint LB_GETLISTBOXINFO = 434U;
internal const uint LB_MSGMAX = 435U;
internal const uint LB_SRC_ADDR_USE_SRCADDR_FLAG = 1U;
internal const uint LB_SRC_ADDR_USE_DSTADDR_FLAG = 2U;
internal const uint LB_DST_ADDR_USE_SRCADDR_FLAG = 4U;
internal const uint LB_DST_ADDR_USE_DSTADDR_FLAG = 8U;
internal const uint LB_SRC_MASK_LATE_FLAG = 16U;
internal const uint LB_DST_MASK_LATE_FLAG = 32U;
/// <summary>Notifies the application that the list box cannot allocate enough memory to meet a specific request. The parent window of the list box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lbn-errspace">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const int LBN_ERRSPACE = -2;
/// <summary>Notifies the application that the selection in a list box has changed as a result of user input. The parent window of the list box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para>This notification code is sent only by a list box that has the [**LBS\_NOTIFY**](list-box-styles.md) style. This notification code is not sent if the [**LB\_SETSEL**](lb-setsel.md), [**LB\_SETCURSEL**](lb-setcursel.md), [**LB\_SELECTSTRING**](lb-selectstring.md), [**LB\_SELITEMRANGE**](lb-selitemrange.md) or [**LB\_SELITEMRANGEEX**](lb-selitemrangeex.md) message changes the selection. For a multiple-selection list box, the LBN\_SELCHANGE notification code is sent whenever the user presses an arrow key, even if the selection does not change.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lbn-selchange#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LBN_SELCHANGE = 1U;
/// <summary>Notifies the application that the user has double-clicked an item in a list box. The parent window of the list box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>This notification code is sent only by a list box that has the [**LBS\_NOTIFY**](list-box-styles.md) style.</remarks>
internal const uint LBN_DBLCLK = 2U;
/// <summary>Notifies the application that the user has canceled the selection in a list box. The parent window of the list box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>This notification code is sent only by a list box that has the L[**BS\_NOTIFY**](button-styles.md) style.</remarks>
internal const uint LBN_SELCANCEL = 3U;
/// <summary>Notifies the application that the list box has received the keyboard focus. The parent window of the list box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lbn-setfocus">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LBN_SETFOCUS = 4U;
/// <summary>Notifies the application that the list box has lost the keyboard focus. The parent window of the list box receives this notification code through the WM\_COMMAND message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lbn-killfocus">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LBN_KILLFOCUS = 5U;
internal const int LBS_NOTIFY = 1;
internal const int LBS_SORT = 2;
internal const int LBS_NOREDRAW = 4;
internal const int LBS_MULTIPLESEL = 8;
internal const int LBS_OWNERDRAWFIXED = 16;
internal const int LBS_OWNERDRAWVARIABLE = 32;
internal const int LBS_HASSTRINGS = 64;
internal const int LBS_USETABSTOPS = 128;
internal const int LBS_NOINTEGRALHEIGHT = 256;
internal const int LBS_MULTICOLUMN = 512;
internal const int LBS_WANTKEYBOARDINPUT = 1024;
internal const int LBS_EXTENDEDSEL = 2048;
internal const int LBS_DISABLENOSCROLL = 4096;
internal const int LBS_NODATA = 8192;
internal const int LBS_NOSEL = 16384;
internal const int LBS_COMBOBOX = 32768;
internal const int LBS_STANDARD = 10485763;
internal const uint LOCALE_IMEASURE = 13U;
internal const string LOCALE_NAME_SYSTEM_DEFAULT = "!x-sys-default-locale";
internal const uint LOCALE_TRANSIENT_KEYBOARD1 = 8192U;
internal const uint LOCALE_TRANSIENT_KEYBOARD2 = 9216U;
internal const uint LOCALE_TRANSIENT_KEYBOARD3 = 10240U;
internal const uint LOCALE_TRANSIENT_KEYBOARD4 = 11264U;
internal const uint LV_VIEW_ICON = 0U;
internal const uint LV_VIEW_DETAILS = 1U;
internal const uint LV_VIEW_SMALLICON = 2U;
internal const uint LV_VIEW_LIST = 3U;
internal const uint LV_VIEW_TILE = 4U;
internal const uint LV_VIEW_MAX = 4U;
/// <summary>Aligns items according to the list-view control's current alignment styles (the default value).</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_arrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVA_DEFAULT = 0U;
/// <summary>Not implemented. Apply the <a href="https://docs.microsoft.com/windows/desktop/Controls/list-view-window-styles">LVS_ALIGNLEFT</a> style instead.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_arrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVA_ALIGNLEFT = 1U;
/// <summary>Not implemented. Apply the <a href="https://docs.microsoft.com/windows/desktop/Controls/list-view-window-styles">LVS_ALIGNTOP</a> style instead.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_arrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVA_ALIGNTOP = 2U;
/// <summary>Snaps all icons to the nearest grid position.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_arrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVA_SNAPTOGRID = 5U;
/// <summary>Coordinates of the entire expanded group.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getgrouprect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVGGR_GROUP = 0U;
/// <summary>Coordinates of the header only (collapsed group).</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getgrouprect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVGGR_HEADER = 1U;
/// <summary>Coordinates of the label only.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getgrouprect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVGGR_LABEL = 2U;
/// <summary>Coordinates of the subset link only (markup subset). A list-view control can limit the number of visible items displayed in each group. A link is presented to the user to allow the user to expand the group. This flag will return the bounding rectangle of the subset link if the group is a subset (group state of LVGS_SUBSETED, see structure <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/ns-commctrl-lvgroup">LVGROUP</a>, member <b>state</b>). This flag is provided so that accessibility applications can locate the link.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getgrouprect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVGGR_SUBSETLINK = 3U;
/// <summary>Documentation varies per use. Refer to each: <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getitemindexrect">ListView_GetItemIndexRect</see>, <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getitemrect">ListView_GetItemRect</see>.</summary>
internal const uint LVIR_BOUNDS = 0U;
/// <summary>Documentation varies per use. Refer to each: <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getitemindexrect">ListView_GetItemIndexRect</see>, <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getitemrect">ListView_GetItemRect</see>.</summary>
internal const uint LVIR_ICON = 1U;
/// <summary>Documentation varies per use. Refer to each: <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getitemindexrect">ListView_GetItemIndexRect</see>, <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getitemrect">ListView_GetItemRect</see>.</summary>
internal const uint LVIR_LABEL = 2U;
/// <summary>Returns the union of the LVIR_ICON and LVIR_LABEL rectangles, but excludes columns in report view.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getitemrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVIR_SELECTBOUNDS = 3U;
internal const uint LVM_FIRST = 4096U;
/// <summary>LVM_SETUNICODEFORMAT message - Sets the UNICODE character format flag for the control.</summary>
/// <returns>Returns the previous Unicode format flag for the control.</returns>
/// <remarks>See the remarks for [**CCM\_SETUNICODEFORMAT**](ccm-setunicodeformat.md) for a discussion of this message.</remarks>
internal const uint LVM_SETUNICODEFORMAT = 8197U;
/// <summary>Retrieves the UNICODE character format flag for the control. You can send this message explicitly or use the ListView\_GetUnicodeFormat macro.</summary>
/// <returns>Returns the Unicode format flag for the control. If this value is nonzero, the control is using Unicode characters. If this value is zero, the control is using ANSI characters.</returns>
/// <remarks>See the remarks for [**CCM\_GETUNICODEFORMAT**](ccm-getunicodeformat.md) for a discussion of this message.</remarks>
internal const uint LVM_GETUNICODEFORMAT = 8198U;
/// <summary>Gets the background color of a list-view control. You can send this message explicitly or by using the ListView\_GetBkColor macro.</summary>
/// <returns>Returns the background color of the list-view control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getbkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETBKCOLOR = 4096U;
/// <summary>Sets the background color of a list-view control. You can send this message explicitly or by using the ListView\_SetBkColor macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setbkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETBKCOLOR = 4097U;
/// <summary>Retrieves the handle to an image list used for drawing list-view items. You can send this message explicitly or by using the ListView\_GetImageList macro.</summary>
/// <returns>Returns the handle to the specified image list if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETIMAGELIST = 4098U;
/// <summary>Assigns an image list to a list-view control. You can send this message explicitly or by using the ListView\_SetImageList macro.</summary>
/// <returns>Returns the handle to the image list previously associated with the control if successful, or **NULL** otherwise.</returns>
/// <remarks>The current image list will be destroyed when the list-view control is destroyed unless the [**LVS\_SHAREIMAGELISTS**](list-view-window-styles.md) style is set. If you use this message to replace one image list with another, your application must explicitly destroy all image lists other than the current one.</remarks>
internal const uint LVM_SETIMAGELIST = 4099U;
/// <summary>Retrieves the number of items in a list-view control. You can send this message explicitly or by using the ListView\_GetItemCount macro.</summary>
/// <returns>Returns the number of items.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitemcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMCOUNT = 4100U;
/// <summary>Retrieves some or all of a list-view item's attributes. You can send this message explicitly or by using the ListView\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>When the **LVM\_GETITEM** message is sent, the **iItem** and **iSubItem** members identify the item or subitem to retrieve information about and the **mask** member specifies which attributes to retrieve. For a list of possible values, see the description of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure. If the LVIF\_TEXT flag is set in the **mask** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure, the **pszText** member must point to a valid buffer and the **cchTextMax** member must be set to the number of characters in that buffer. Applications should not assume that the text will necessarily be placed in the specified buffer. The control may instead change the **pszText** member of the structure to point to the new text, rather than place it in the buffer. If the **mask** member specifies the LVIF\_STATE value, the **stateMask** member must specify the item state bits to retrieve. On output, the **state** member contains the values of the specified state bits.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMA = 4101U;
/// <summary>Retrieves some or all of a list-view item's attributes. You can send this message explicitly or by using the ListView\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>When the **LVM\_GETITEM** message is sent, the **iItem** and **iSubItem** members identify the item or subitem to retrieve information about and the **mask** member specifies which attributes to retrieve. For a list of possible values, see the description of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure. If the LVIF\_TEXT flag is set in the **mask** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure, the **pszText** member must point to a valid buffer and the **cchTextMax** member must be set to the number of characters in that buffer. Applications should not assume that the text will necessarily be placed in the specified buffer. The control may instead change the **pszText** member of the structure to point to the new text, rather than place it in the buffer. If the **mask** member specifies the LVIF\_STATE value, the **stateMask** member must specify the item state bits to retrieve. On output, the **state** member contains the values of the specified state bits.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMW = 4171U;
/// <summary>Retrieves some or all of a list-view item's attributes. You can send this message explicitly or by using the ListView\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>When the **LVM\_GETITEM** message is sent, the **iItem** and **iSubItem** members identify the item or subitem to retrieve information about and the **mask** member specifies which attributes to retrieve. For a list of possible values, see the description of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure. If the LVIF\_TEXT flag is set in the **mask** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure, the **pszText** member must point to a valid buffer and the **cchTextMax** member must be set to the number of characters in that buffer. Applications should not assume that the text will necessarily be placed in the specified buffer. The control may instead change the **pszText** member of the structure to point to the new text, rather than place it in the buffer. If the **mask** member specifies the LVIF\_STATE value, the **stateMask** member must specify the item state bits to retrieve. On output, the **state** member contains the values of the specified state bits.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEM = 4171U;
/// <summary>Sets some or all of a list-view item's attributes. You can also send LVM\_SETITEM to set the text of a subitem. You can send this message explicitly or by using the ListView\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>To set the attributes of a list-view item, set the **iItem** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure to the index of the item, and set the **iSubItem** member to zero. For an item, you can set the **state**, **pszText**, **iImage**, and **lParam** members of the **LVITEM** structure. To set the text of a subitem, set the **iItem** and **iSubItem** members to indicate the specific subitem, and use the **pszText** member to specify the text. Alternatively, you can use the [**ListView\_SetItemText**](/windows/desktop/api/Commctrl/nf-commctrl-listview_setitemtext) macro to set the text of a subitem. You cannot set the **state** or **lParam** members for subitems because subitems do not have these attributes. In version 4.70 and later, you can set the **iImage** member for subitems. The subitem image will be displayed if the list-view control has the [**LVS\_EX\_SUBITEMIMAGES**](extended-list-view-styles.md) extended style. Previous versions will ignore the subitem image.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMA = 4102U;
/// <summary>Sets some or all of a list-view item's attributes. You can also send LVM\_SETITEM to set the text of a subitem. You can send this message explicitly or by using the ListView\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>To set the attributes of a list-view item, set the **iItem** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure to the index of the item, and set the **iSubItem** member to zero. For an item, you can set the **state**, **pszText**, **iImage**, and **lParam** members of the **LVITEM** structure. To set the text of a subitem, set the **iItem** and **iSubItem** members to indicate the specific subitem, and use the **pszText** member to specify the text. Alternatively, you can use the [**ListView\_SetItemText**](/windows/desktop/api/Commctrl/nf-commctrl-listview_setitemtext) macro to set the text of a subitem. You cannot set the **state** or **lParam** members for subitems because subitems do not have these attributes. In version 4.70 and later, you can set the **iImage** member for subitems. The subitem image will be displayed if the list-view control has the [**LVS\_EX\_SUBITEMIMAGES**](extended-list-view-styles.md) extended style. Previous versions will ignore the subitem image.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMW = 4172U;
/// <summary>Sets some or all of a list-view item's attributes. You can also send LVM\_SETITEM to set the text of a subitem. You can send this message explicitly or by using the ListView\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>To set the attributes of a list-view item, set the **iItem** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure to the index of the item, and set the **iSubItem** member to zero. For an item, you can set the **state**, **pszText**, **iImage**, and **lParam** members of the **LVITEM** structure. To set the text of a subitem, set the **iItem** and **iSubItem** members to indicate the specific subitem, and use the **pszText** member to specify the text. Alternatively, you can use the [**ListView\_SetItemText**](/windows/desktop/api/Commctrl/nf-commctrl-listview_setitemtext) macro to set the text of a subitem. You cannot set the **state** or **lParam** members for subitems because subitems do not have these attributes. In version 4.70 and later, you can set the **iImage** member for subitems. The subitem image will be displayed if the list-view control has the [**LVS\_EX\_SUBITEMIMAGES**](extended-list-view-styles.md) extended style. Previous versions will ignore the subitem image.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEM = 4172U;
/// <summary>Inserts a new item in a list-view control. You can send this message explicitly or by using the ListView\_InsertItem macro.</summary>
/// <returns>Returns the index of the new item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>You cannot use [**ListView\_InsertItem**](/windows/desktop/api/Commctrl/nf-commctrl-listview_insertitem) or **LVM\_INSERTITEM** to insert subitems. The **iSubItem** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure must be zero. See [**LVM\_SETITEM**](lvm-setitem.md) for information on setting subitems. If a list-view control has the [**LVS\_EX\_CHECKBOXES**](extended-list-view-styles.md) style set, any value placed in bits 12 through 15 of the **state** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure will be ignored. When an item is added with this style set, it will always be set to the unchecked state. If a list-view control has either the [**LVS\_SORTASCENDING**](list-view-window-styles.md) or [**LVS\_SORTDESCENDING**](list-view-window-styles.md) window style, an **LVM\_INSERTITEM** message will fail if you try to insert an item that has LPSTR\_TEXTCALLBACK as the value for its **pszText** member. The **LVM\_INSERTITEM** message will insert the new item in the proper position in the sort order if the following conditions hold: - You are using one of the LVS\_SORTXXX styles. - You are not using the [**LVS\_OWNERDRAW**](list-view-window-styles.md) style. - The **pszText** member of the structure pointed to by **pitem** is not set to LPSTR\_TEXTCALLBACK. If the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure does not contain LVIF\_GROUPID in the **mask** member, the value of the **iGroupId** member is I\_GROUPIDCALLBACK by default.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-insertitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_INSERTITEMA = 4103U;
/// <summary>Inserts a new item in a list-view control. You can send this message explicitly or by using the ListView\_InsertItem macro.</summary>
/// <returns>Returns the index of the new item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>You cannot use [**ListView\_InsertItem**](/windows/desktop/api/Commctrl/nf-commctrl-listview_insertitem) or **LVM\_INSERTITEM** to insert subitems. The **iSubItem** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure must be zero. See [**LVM\_SETITEM**](lvm-setitem.md) for information on setting subitems. If a list-view control has the [**LVS\_EX\_CHECKBOXES**](extended-list-view-styles.md) style set, any value placed in bits 12 through 15 of the **state** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure will be ignored. When an item is added with this style set, it will always be set to the unchecked state. If a list-view control has either the [**LVS\_SORTASCENDING**](list-view-window-styles.md) or [**LVS\_SORTDESCENDING**](list-view-window-styles.md) window style, an **LVM\_INSERTITEM** message will fail if you try to insert an item that has LPSTR\_TEXTCALLBACK as the value for its **pszText** member. The **LVM\_INSERTITEM** message will insert the new item in the proper position in the sort order if the following conditions hold: - You are using one of the LVS\_SORTXXX styles. - You are not using the [**LVS\_OWNERDRAW**](list-view-window-styles.md) style. - The **pszText** member of the structure pointed to by **pitem** is not set to LPSTR\_TEXTCALLBACK. If the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure does not contain LVIF\_GROUPID in the **mask** member, the value of the **iGroupId** member is I\_GROUPIDCALLBACK by default.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-insertitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_INSERTITEMW = 4173U;
/// <summary>Inserts a new item in a list-view control. You can send this message explicitly or by using the ListView\_InsertItem macro.</summary>
/// <returns>Returns the index of the new item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>You cannot use [**ListView\_InsertItem**](/windows/desktop/api/Commctrl/nf-commctrl-listview_insertitem) or **LVM\_INSERTITEM** to insert subitems. The **iSubItem** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure must be zero. See [**LVM\_SETITEM**](lvm-setitem.md) for information on setting subitems. If a list-view control has the [**LVS\_EX\_CHECKBOXES**](extended-list-view-styles.md) style set, any value placed in bits 12 through 15 of the **state** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure will be ignored. When an item is added with this style set, it will always be set to the unchecked state. If a list-view control has either the [**LVS\_SORTASCENDING**](list-view-window-styles.md) or [**LVS\_SORTDESCENDING**](list-view-window-styles.md) window style, an **LVM\_INSERTITEM** message will fail if you try to insert an item that has LPSTR\_TEXTCALLBACK as the value for its **pszText** member. The **LVM\_INSERTITEM** message will insert the new item in the proper position in the sort order if the following conditions hold: - You are using one of the LVS\_SORTXXX styles. - You are not using the [**LVS\_OWNERDRAW**](list-view-window-styles.md) style. - The **pszText** member of the structure pointed to by **pitem** is not set to LPSTR\_TEXTCALLBACK. If the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure does not contain LVIF\_GROUPID in the **mask** member, the value of the **iGroupId** member is I\_GROUPIDCALLBACK by default.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-insertitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_INSERTITEM = 4173U;
/// <summary>Removes an item from a list-view control. You can send this message explicitly or by using the ListView\_DeleteItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-deleteitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_DELETEITEM = 4104U;
/// <summary>Removes all items from a list-view control. You can send this message explicitly or by using the ListView\_DeleteAllItems macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>When a list-view control receives the **LVM\_DELETEALLITEMS** message, it sends the [**LVN\_DELETEALLITEMS**](lvn-deleteallitems.md) notification code to its parent window.</remarks>
internal const uint LVM_DELETEALLITEMS = 4105U;
/// <summary>Gets the callback mask for a list-view control. You can send this message explicitly or by using the ListView\_GetCallbackMask macro.</summary>
/// <returns>Returns the callback mask.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getcallbackmask">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETCALLBACKMASK = 4106U;
/// <summary>Changes the callback mask for a list-view control. You can send this message explicitly or by using the ListView\_SetCallbackMask macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>The *callback mask* of a list-view control is a set of bit flags that specify the item states for which the application, rather than the control, stores the current data. The callback mask applies to all of the control's items, unlike the callback item designation, which applies to a specific item. The callback mask is zero by default, meaning that the list-view control stores all item state information. After creating a list-view control and initializing its items, you can send the **LVM\_SETCALLBACKMASK** message to change the callback mask. To retrieve the current callback mask, send the [**LVM\_GETCALLBACKMASK**](lvm-getcallbackmask.md) message. For more information about overlay images and state images, see [Adding List-View Image Lists](using-list-view-controls.md). For more information on list-view callbacks, see [Callback Items and the Callback Mask](list-view-controls-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setcallbackmask#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETCALLBACKMASK = 4107U;
/// <summary>Searches for a list-view item that has the specified properties and bears the specified relationship to a specified item. You can send this message explicitly or by using the ListView\_GetNextItem macro.</summary>
/// <returns>Returns the index of the next item if successful, or -1 otherwise.</returns>
/// <remarks>Note that the following flags, for use only with Windows Vista, are mutually exclusive of any other flags in use: LVNI\_VISIBLEONLY, LVNI\_SAMEGROUPONLY, LVNI\_VISIBLEORDER, LVNI\_DIRECTIONMASK, and LVNI\_STATEMASK.</remarks>
internal const uint LVM_GETNEXTITEM = 4108U;
/// <summary>Searches for a list-view item with the specified characteristics. You can send this message explicitly or by using the ListView\_FindItem macro.</summary>
/// <returns>Returns the index of the item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-finditem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_FINDITEMA = 4109U;
/// <summary>Searches for a list-view item with the specified characteristics. You can send this message explicitly or by using the ListView\_FindItem macro.</summary>
/// <returns>Returns the index of the item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-finditem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_FINDITEMW = 4179U;
/// <summary>Searches for a list-view item with the specified characteristics. You can send this message explicitly or by using the ListView\_FindItem macro.</summary>
/// <returns>Returns the index of the item if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-finditem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_FINDITEM = 4179U;
/// <summary>Retrieves the bounding rectangle for all or part of an item in the current view. You can send this message explicitly or by using the ListView\_GetItemRect macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitemrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMRECT = 4110U;
/// <summary>Moves an item to a specified position in a list-view control (must be in icon or small icon view). You can send this message explicitly or by using the ListView\_SetItemPosition macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>If the list-view control has the [**LVS\_AUTOARRANGE**](list-view-window-styles.md) style, the items in the list-view control are arranged after the position of the item is set. On Windows Vista, sending this message to a list-view control with the [**LVS\_AUTOARRANGE**](list-view-window-styles.md) style does nothing, and the return value is **FALSE**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitemposition#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMPOSITION = 4111U;
/// <summary>Retrieves the position of a list-view item. You can send this message explicitly or by using the ListView\_GetItemPosition macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitemposition">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMPOSITION = 4112U;
/// <summary>Determines the width of a specified string using the specified list-view control's current font. You can send this message explicitly or by using the ListView\_GetStringWidth macro.</summary>
/// <returns>Returns the string width if successful, or zero otherwise.</returns>
/// <remarks>The LVM\_GETSTRINGWIDTH message returns the exact width, in pixels, of the specified string. If you use the returned string width as the column width in the [**LVM\_SETCOLUMNWIDTH**](lvm-setcolumnwidth.md) message, the string will be truncated. To retrieve the column width that can contain the string without truncating it, you must add padding to the returned string width.</remarks>
internal const uint LVM_GETSTRINGWIDTHA = 4113U;
/// <summary>Determines the width of a specified string using the specified list-view control's current font. You can send this message explicitly or by using the ListView\_GetStringWidth macro.</summary>
/// <returns>Returns the string width if successful, or zero otherwise.</returns>
/// <remarks>The LVM\_GETSTRINGWIDTH message returns the exact width, in pixels, of the specified string. If you use the returned string width as the column width in the [**LVM\_SETCOLUMNWIDTH**](lvm-setcolumnwidth.md) message, the string will be truncated. To retrieve the column width that can contain the string without truncating it, you must add padding to the returned string width.</remarks>
internal const uint LVM_GETSTRINGWIDTHW = 4183U;
/// <summary>Determines the width of a specified string using the specified list-view control's current font. You can send this message explicitly or by using the ListView\_GetStringWidth macro.</summary>
/// <returns>Returns the string width if successful, or zero otherwise.</returns>
/// <remarks>The LVM\_GETSTRINGWIDTH message returns the exact width, in pixels, of the specified string. If you use the returned string width as the column width in the [**LVM\_SETCOLUMNWIDTH**](lvm-setcolumnwidth.md) message, the string will be truncated. To retrieve the column width that can contain the string without truncating it, you must add padding to the returned string width.</remarks>
internal const uint LVM_GETSTRINGWIDTH = 4183U;
/// <summary>Determines which list-view item, if any, is at a specified position. You can send this message explicitly or by using the ListView\_HitTest macro.</summary>
/// <returns>Returns the index of the item at the specified position, if any, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-hittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_HITTEST = 4114U;
/// <summary>Ensures that a list-view item is either entirely or partially visible, scrolling the list-view control if necessary. You can send this message explicitly or by using the ListView\_EnsureVisible macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>The message fails if the window style includes [**LVS\_NOSCROLL**](list-view-window-styles.md).</remarks>
internal const uint LVM_ENSUREVISIBLE = 4115U;
/// <summary>Scrolls the content of a list-view control. You can send this message explicitly or by using the ListView\_Scroll macro.</summary>
/// <returns>Returns **TRUE** if successful; otherwise, **FALSE**.</returns>
/// <remarks>When the list-view control is in report view, the control can only be scrolled vertically in whole line increments. Therefore, the *lParam* parameter will be rounded to the nearest number of pixels that form a whole line increment. For example, if the height of a line is 16 pixels and 8 is passed for *lParam*, the list will be scrolled by 16 pixels (1 line). If 7 is passed for *lParam*, the list will be scrolled 0 pixels (0 lines).</remarks>
internal const uint LVM_SCROLL = 4116U;
/// <summary>Forces a list-view control to redraw a range of items. You can send this message explicitly or by using the ListView\_RedrawItems macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>The specified items are not actually redrawn until the list-view window receives a [**WM\_PAINT**](/windows/desktop/gdi/wm-paint) message to repaint. To repaint immediately, call the [**UpdateWindow**](/windows/desktop/api/winuser/nf-winuser-updatewindow) function after using this macro.</remarks>
internal const uint LVM_REDRAWITEMS = 4117U;
/// <summary>Arranges items in icon view. You can send this message explicitly or by using the ListView\_Arrange macro.</summary>
/// <returns>Returns **TRUE** if successful; otherwise, **FALSE**.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-arrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_ARRANGE = 4118U;
/// <summary>Begins in-place editing of the specified list-view item's text. The message implicitly selects and focuses the specified item. You can send this message explicitly or by using the ListView\_EditLabel macro.</summary>
/// <returns>Returns the handle to the edit control that is used to edit the item text if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>When the user completes or cancels editing, the edit control is destroyed and the handle is no longer valid. You can subclass the edit control, but you should not destroy it. The control must have the focus before you send this message to the control. Focus can be set using the [**SetFocus**](/windows/desktop/api/winuser/nf-winuser-setfocus) function. If *wParam* is -1, an [LVN\_ENDLABELEDIT](lvn-endlabeledit.md) notification code is sent.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-editlabel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_EDITLABELA = 4119U;
/// <summary>Begins in-place editing of the specified list-view item's text. The message implicitly selects and focuses the specified item. You can send this message explicitly or by using the ListView\_EditLabel macro.</summary>
/// <returns>Returns the handle to the edit control that is used to edit the item text if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>When the user completes or cancels editing, the edit control is destroyed and the handle is no longer valid. You can subclass the edit control, but you should not destroy it. The control must have the focus before you send this message to the control. Focus can be set using the [**SetFocus**](/windows/desktop/api/winuser/nf-winuser-setfocus) function. If *wParam* is -1, an [LVN\_ENDLABELEDIT](lvn-endlabeledit.md) notification code is sent.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-editlabel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_EDITLABELW = 4214U;
/// <summary>Begins in-place editing of the specified list-view item's text. The message implicitly selects and focuses the specified item. You can send this message explicitly or by using the ListView\_EditLabel macro.</summary>
/// <returns>Returns the handle to the edit control that is used to edit the item text if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>When the user completes or cancels editing, the edit control is destroyed and the handle is no longer valid. You can subclass the edit control, but you should not destroy it. The control must have the focus before you send this message to the control. Focus can be set using the [**SetFocus**](/windows/desktop/api/winuser/nf-winuser-setfocus) function. If *wParam* is -1, an [LVN\_ENDLABELEDIT](lvn-endlabeledit.md) notification code is sent.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-editlabel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_EDITLABEL = 4214U;
/// <summary>Gets the handle to the edit control being used to edit a list-view item's text. You can send this message explicitly or by using the ListView\_GetEditControl macro.</summary>
/// <returns>Returns the handle to the edit control if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>When label editing begins, an edit control is created, positioned, and initialized. Before it is displayed, the list-view control sends its parent window an [LVN\_BEGINLABELEDIT](lvn-beginlabeledit.md) notification code. To customize label editing, implement a handler for [LVN\_BEGINLABELEDIT](lvn-beginlabeledit.md) and have it send an **LVM\_GETEDITCONTROL** message to the list-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual **EM\_XXX** messages. When the user completes or cancels editing, the edit control is destroyed and the handle is no longer valid. You can subclass the edit control, but you should not destroy it. To cancel editing, send the list-view control a [**WM\_CANCELMODE**](/windows/desktop/winmsg/wm-cancelmode) message. The list-view item being edited is the currently focused item that is, the item in the focused state. To find an item based on its state, use the [**LVM\_GETNEXTITEM**](lvm-getnextitem.md) message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-geteditcontrol#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETEDITCONTROL = 4120U;
internal const uint LVM_GETCOLUMNA = 4121U;
internal const uint LVM_GETCOLUMNW = 4191U;
/// <summary>Gets the attributes of a list-view control's column. You can send this message explicitly or by using the ListView\_GetColumn macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getcolumn">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETCOLUMN = 4191U;
internal const uint LVM_SETCOLUMNA = 4122U;
/// <summary>Sets the attributes of a list-view column. You can send this message explicitly or by using the ListView\_SetColumn macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setcolumn">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETCOLUMNW = 4192U;
/// <summary>Sets the attributes of a list-view column. You can send this message explicitly or by using the ListView\_SetColumn macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setcolumn">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETCOLUMN = 4192U;
internal const uint LVM_INSERTCOLUMNA = 4123U;
internal const uint LVM_INSERTCOLUMNW = 4193U;
/// <summary>Inserts a new column in a list-view control. You can send this message explicitly or by using the ListView\_InsertColumn macro.</summary>
/// <returns>Returns the index of the new column if successful, or -1 otherwise.</returns>
/// <remarks>Columns are visible only in report (details) view.</remarks>
internal const uint LVM_INSERTCOLUMN = 4193U;
/// <summary>Removes a column from a list-view control. You can send this message explicitly or by using the ListView\_DeleteColumn macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>Deleting column zero of a list-view control is supported only in ComCtl32.dll version 6 and later. Version 5 also supports deleting column zero, but only after you use [**CCM\_SETVERSION**](ccm-setversion.md) to set the version to 5 or later. In versions prior to version 5, if you must delete column zero, insert a zero length dummy column zero and delete column one and above.</remarks>
internal const uint LVM_DELETECOLUMN = 4124U;
/// <summary>Gets the width of a column in report or list view. You can send this message explicitly or by using the ListView\_GetColumnWidth macro.</summary>
/// <returns>Returns the column width if successful, or zero otherwise. If this message is sent to a list-view control with the [**LVS\_REPORT**](list-view-window-styles.md) style and the specified column does not exist, the return value is undefined.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getcolumnwidth">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETCOLUMNWIDTH = 4125U;
/// <summary>Changes the width of a column in report-view mode or the width of all columns in list-view mode. You can send this message explicitly or use the ListView\_SetColumnWidth macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>Assume that you have a 2-column list-view control with a width of 500 pixels. If the width of column zero is set to 200 pixels, and you send this message with *wParam* = 1 and *lParam* = LVSCW\_AUTOSIZE\_USEHEADER, the second (and last) column will be 300 pixels wide.</remarks>
internal const uint LVM_SETCOLUMNWIDTH = 4126U;
/// <summary>Gets the handle to the header control used by the list-view control. You can send this message explicitly or use the ListView\_GetHeader macro.</summary>
/// <returns>Returns the handle to the header control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getheader">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETHEADER = 4127U;
/// <summary>Creates a drag image list for the specified item. You can send this message explicitly or by using the ListView\_CreateDragImage macro.</summary>
/// <returns>Returns the handle to the drag image list if successful, or **NULL** otherwise.</returns>
/// <remarks>Your application is responsible for destroying the image list when it is no longer needed.</remarks>
internal const uint LVM_CREATEDRAGIMAGE = 4129U;
/// <summary>Retrieves the bounding rectangle of all items in the list-view control. The list view must be in icon or small icon view. You can send this message explicitly or by using the ListView\_GetViewRect macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getviewrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETVIEWRECT = 4130U;
/// <summary>Retrieves the text color of a list-view control. You can send this message explicitly or by using the ListView\_GetTextColor macro.</summary>
/// <returns>Returns the text color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-gettextcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETTEXTCOLOR = 4131U;
/// <summary>Sets the text color of a list-view control. You can send this message explicitly or by using the ListView\_SetTextColor macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-settextcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETTEXTCOLOR = 4132U;
/// <summary>Retrieves the text background color of a list-view control. You can send this message explicitly or by using the ListView\_GetTextBkColor macro.</summary>
/// <returns>Returns the background color of the text.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-gettextbkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETTEXTBKCOLOR = 4133U;
/// <summary>Sets the background color of text in a list-view control. You can send this message explicitly or by using the ListView\_SetTextBkColor macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-settextbkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETTEXTBKCOLOR = 4134U;
/// <summary>Retrieves the index of the topmost visible item when in list or report view. You can send this message explicitly or by using the ListView\_GetTopIndex macro.</summary>
/// <returns>Returns the index of the item if successful. Returns zero if the list-view control is in icon or small icon view, or if the list-view control is in details view with groups enabled.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-gettopindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETTOPINDEX = 4135U;
/// <summary>Calculates the number of items that can fit vertically in the visible area of a list-view control when in list or report view. Only fully visible items are counted. You can send this message explicitly or by using the ListView\_GetCountPerPage macro.</summary>
/// <returns>Returns the number of fully visible items if successful. If the current view is icon or small icon view, the return value is the total number of items in the list-view control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getcountperpage">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETCOUNTPERPAGE = 4136U;
/// <summary>Retrieves the current view origin for a list-view control. You can send this message explicitly or by using the ListView\_GetOrigin macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** if the current view is list or report view.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getorigin">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETORIGIN = 4137U;
/// <summary>Updates a list-view item. If the list-view control has the LVS\_AUTOARRANGE style, this macro causes the list-view control to be arranged. You can send this message explicitly or by using the ListView\_Update macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-update">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_UPDATE = 4138U;
/// <summary>Changes the state of an item in a list-view control. You can send this message explicitly or by using the ListView\_SetItemState macro.</summary>
/// <returns>If you send this message explicitly, it returns **TRUE** if successful or **FALSE** otherwise.</returns>
/// <remarks>An item's state value includes a set of bit flags that indicate the item's state. The state value can also include image list indexes that indicate the item's state image and overlay image.</remarks>
internal const uint LVM_SETITEMSTATE = 4139U;
/// <summary>Retrieves the state of a list-view item. You can send this message explicitly or by using the ListView\_GetItemState macro.</summary>
/// <returns>Returns the current state for the specified item. The only valid bits in the return value are those that correspond to the bits set in the *lParam* parameter.</returns>
/// <remarks>An item's state information includes a set of bit flags as well as image list indexes that indicate the item's state image and overlay image.</remarks>
internal const uint LVM_GETITEMSTATE = 4140U;
/// <summary>Retrieves the text of a list-view item or subitem. You can send this message explicitly or by using the ListView\_GetItemText macro.</summary>
/// <returns>If you send this message explicitly, it returns the number of characters in the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure.</returns>
/// <remarks>
/// <para>You can also send this message by calling the [**ListView\_GetItemText**](/windows/desktop/api/Commctrl/nf-commctrl-listview_getitemtext) macro. However, this macro does not return the string length. **LVM\_GETITEMTEXT** is not supported under the [**LVS\_OWNERDATA**](list-view-window-styles.md) style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitemtext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMTEXTA = 4141U;
/// <summary>Retrieves the text of a list-view item or subitem. You can send this message explicitly or by using the ListView\_GetItemText macro.</summary>
/// <returns>If you send this message explicitly, it returns the number of characters in the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure.</returns>
/// <remarks>
/// <para>You can also send this message by calling the [**ListView\_GetItemText**](/windows/desktop/api/Commctrl/nf-commctrl-listview_getitemtext) macro. However, this macro does not return the string length. **LVM\_GETITEMTEXT** is not supported under the [**LVS\_OWNERDATA**](list-view-window-styles.md) style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitemtext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMTEXTW = 4211U;
/// <summary>Retrieves the text of a list-view item or subitem. You can send this message explicitly or by using the ListView\_GetItemText macro.</summary>
/// <returns>If you send this message explicitly, it returns the number of characters in the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure.</returns>
/// <remarks>
/// <para>You can also send this message by calling the [**ListView\_GetItemText**](/windows/desktop/api/Commctrl/nf-commctrl-listview_getitemtext) macro. However, this macro does not return the string length. **LVM\_GETITEMTEXT** is not supported under the [**LVS\_OWNERDATA**](list-view-window-styles.md) style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitemtext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMTEXT = 4211U;
/// <summary>Changes the text of a list-view item or subitem. You can send this message explicitly or by using the ListView\_SetItemText macro.</summary>
/// <returns>If you send this message explicitly, it returns **TRUE** if successful or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitemtext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMTEXTA = 4142U;
/// <summary>Changes the text of a list-view item or subitem. You can send this message explicitly or by using the ListView\_SetItemText macro.</summary>
/// <returns>If you send this message explicitly, it returns **TRUE** if successful or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitemtext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMTEXTW = 4212U;
/// <summary>Changes the text of a list-view item or subitem. You can send this message explicitly or by using the ListView\_SetItemText macro.</summary>
/// <returns>If you send this message explicitly, it returns **TRUE** if successful or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitemtext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMTEXT = 4212U;
/// <summary>Causes the list-view control to allocate memory for the specified number of items or sets the virtual number of items in a virtual list-view control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para>How the memory is allocated depends on how the list-view control was created. You can send this message explicitly or use the [**ListView\_SetItemCount**](/windows/desktop/api/Commctrl/nf-commctrl-listview_setitemcount) or [**ListView\_SetItemCountEx**](/windows/desktop/api/Commctrl/nf-commctrl-listview_setitemcountex) macros. For more information, see [Virtual List-View Style](/windows/desktop/Controls/list-view-controls-overview). If the list-view control was created without the [**LVS\_OWNERDATA**](list-view-window-styles.md) style, sending this message causes the control to allocate its internal data structures for the specified number of items. This prevents the control from having to allocate the data structures every time an item is added. If the list-view control was created with the [**LVS\_OWNERDATA**](list-view-window-styles.md) style (a virtual list view), sending this message sets the virtual number of items that the control contains. The *lParam* parameter is intended only for list-view controls that use the [**LVS\_OWNERDATA**](list-view-window-styles.md) and [**LVS\_REPORT**](list-view-window-styles.md) or [**LVS\_LIST**](list-view-window-styles.md) styles. When the common control list-view is a virtualized list-view ([**LVS\_OWNERDATA**](list-view-window-styles.md)), there is a 100,000,000 item limit on the list-view. In this scenario, **LVM\_SETITEMCOUNT** will return FALSE when it has a *wParam* of 100,000,001.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitemcount#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMCOUNT = 4143U;
/// <summary>Uses an application-defined comparison function to sort the items of a list-view control. The index of each item changes to reflect the new sequence. You can send this message explicitly or by using the ListView\_SortItems macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>The comparison function has the following form: </para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-sortitems#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SORTITEMS = 4144U;
/// <summary>Moves an item to a specified position in a list-view control (must be in icon or small icon view).</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitemposition32">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMPOSITION32 = 4145U;
/// <summary>Determines the number of selected items in a list-view control. You can send this message explicitly or by using the ListView\_GetSelectedCount macro.</summary>
/// <returns>Returns the number of selected items.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getselectedcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETSELECTEDCOUNT = 4146U;
/// <summary>Determines the spacing between items in a list-view control. You can send this message explicitly or by using the ListView\_GetItemSpacing macro.</summary>
/// <returns>Returns the amount of spacing between items. The horizontal spacing is contained in the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) and the vertical spacing is contained in the [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitemspacing">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMSPACING = 4147U;
/// <summary>Retrieves the incremental search string of a list-view control. You can send this message explicitly or by using the ListView\_GetISearchString macro.</summary>
/// <returns>Returns the number of characters in the incremental search string, not including the terminating NULL character, or zero if the list-view control is not in incremental search mode.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. This message does not provide a way for you to know the size of the buffer. If you use this message, first call the message passing **NULL** in the *lParam*, this returns the number of characters, excluding **NULL** that are required. Then call the message a second time to retrieve the string. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. The *incremental search string* is the character sequence that the user types while the list view has the input focus. Each time the user types a character, the system appends the character to the search string and then searches for a matching item. If the system finds a match, it selects the item and, if necessary, scrolls it into view. A time-out period is associated with each character that the user types. If the time-out period elapses before the user types another character, the incremental search string is reset. Make sure that the buffer is large enough to hold the string and the terminating NULL character. If it is too small, an immediate invalid page fault will result.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getisearchstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETISEARCHSTRINGA = 4148U;
/// <summary>Retrieves the incremental search string of a list-view control. You can send this message explicitly or by using the ListView\_GetISearchString macro.</summary>
/// <returns>Returns the number of characters in the incremental search string, not including the terminating NULL character, or zero if the list-view control is not in incremental search mode.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. This message does not provide a way for you to know the size of the buffer. If you use this message, first call the message passing **NULL** in the *lParam*, this returns the number of characters, excluding **NULL** that are required. Then call the message a second time to retrieve the string. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. The *incremental search string* is the character sequence that the user types while the list view has the input focus. Each time the user types a character, the system appends the character to the search string and then searches for a matching item. If the system finds a match, it selects the item and, if necessary, scrolls it into view. A time-out period is associated with each character that the user types. If the time-out period elapses before the user types another character, the incremental search string is reset. Make sure that the buffer is large enough to hold the string and the terminating NULL character. If it is too small, an immediate invalid page fault will result.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getisearchstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETISEARCHSTRINGW = 4213U;
/// <summary>Retrieves the incremental search string of a list-view control. You can send this message explicitly or by using the ListView\_GetISearchString macro.</summary>
/// <returns>Returns the number of characters in the incremental search string, not including the terminating NULL character, or zero if the list-view control is not in incremental search mode.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. This message does not provide a way for you to know the size of the buffer. If you use this message, first call the message passing **NULL** in the *lParam*, this returns the number of characters, excluding **NULL** that are required. Then call the message a second time to retrieve the string. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. The *incremental search string* is the character sequence that the user types while the list view has the input focus. Each time the user types a character, the system appends the character to the search string and then searches for a matching item. If the system finds a match, it selects the item and, if necessary, scrolls it into view. A time-out period is associated with each character that the user types. If the time-out period elapses before the user types another character, the incremental search string is reset. Make sure that the buffer is large enough to hold the string and the terminating NULL character. If it is too small, an immediate invalid page fault will result.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getisearchstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETISEARCHSTRING = 4213U;
/// <summary>Sets the spacing between icons in list-view controls that have the LVS\_ICON style. You can send this message explicitly or by using the ListView\_SetIconSpacing macro.</summary>
/// <returns>Returns a **DWORD** value that contains the previous x-axis distance in the low word, and the previous y-axis distance in the high word.</returns>
/// <remarks>
/// <para>Values for *lParam* are relative to the upper-left corner of an icon bitmap. Therefore, to set spacing between icons that do not overlap, the *lParam* values must include the size of the icon, plus the amount of empty space desired between icons. Values that do not include the width of the icon will result in overlaps. When defining the icon spacing, the *lParam* values must set to 4 or larger. Smaller values will not yield the desired layout. To reset the icons to the default spacing, set the *lParam* values to -1.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-seticonspacing#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETICONSPACING = 4149U;
/// <summary>Sets extended styles in list-view controls. You can send this message explicitly or use the ListView\_SetExtendedListViewStyle or ListView\_SetExtendedListViewStyleEx macro.</summary>
/// <returns>Returns a **DWORD** value that contains the previous extended list-view control styles.</returns>
/// <remarks>
/// <para>The *wParam* parameter allows you to modify one or more extended styles without having to retrieve the existing styles first. For example, if you pass [**LVS\_EX\_FULLROWSELECT**](extended-list-view-styles.md) for *wParam* and 0 for *lParam*, the **LVS\_EX\_FULLROWSELECT** style will be cleared but all other styles will remain the same. For backward compatibility reasons, the [**ListView\_SetExtendedListViewStyle**](/windows/desktop/api/Commctrl/nf-commctrl-listview_setextendedlistviewstyle) macro has not been updated to use *wParam*. To use the *wParam* value, use the [**ListView\_SetExtendedListViewStyleEx**](/windows/desktop/api/Commctrl/nf-commctrl-listview_setextendedlistviewstyleex) macro. When you use this message to set the [**LVS\_EX\_CHECKBOXES**](extended-list-view-styles.md) style, any previously set state image index will be discarded. All check boxes will be initialized to the unchecked state. The state image index is contained in bits 12 through 15 of the **state** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setextendedlistviewstyle#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETEXTENDEDLISTVIEWSTYLE = 4150U;
/// <summary>Gets the extended styles that are currently in use for a given list-view control. You can send this message explicitly or use the ListView\_GetExtendedListViewStyle macro.</summary>
/// <returns>Returns a **DWORD** that represents the styles currently in use for a given list-view control. This value can be a combination of [Extended List-View Styles](extended-list-view-styles.md).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getextendedlistviewstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETEXTENDEDLISTVIEWSTYLE = 4151U;
/// <summary>Retrieves information about the bounding rectangle for a subitem in a list-view control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para>Following are the flag values that may be set.</para>
/// <para>| Requirement | Value | |----------------|---------------------------------------------------------------------------------------------------------------------| | **Flag Value** | **Meaning** | | LVIR\_BOUNDS | Returns the bounding rectangle of the entire item, including the icon and label. | | LVIR\_ICON | Returns the bounding rectangle of the icon or small icon. | | LVIR\_LABEL | Returns the bounding rectangle of the entire item, including the icon and label. This is identical to LVIR\_BOUNDS. |</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getsubitemrect#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETSUBITEMRECT = 4152U;
/// <summary>Determines which list-view item or subitem is at a given position. You can send this message explicitly or by using the ListView\_SubItemHitTest macro.</summary>
/// <returns>Returns the index of the item or subitem tested, if any, or -1 otherwise. If an item or subitem is at the given coordinates, the fields of the [**LVHITTESTINFO**](/windows/win32/api/commctrl/ns-commctrl-lvhittestinfo) structure will be filled with the applicable hit information.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-subitemhittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SUBITEMHITTEST = 4153U;
/// <summary>Sets the left-to-right order of columns in a list-view control. You can send this message explicitly or use the ListView\_SetColumnOrderArray macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setcolumnorderarray">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETCOLUMNORDERARRAY = 4154U;
/// <summary>Gets the current left-to-right order of columns in a list-view control. You can send this message explicitly or use the ListView\_GetColumnOrderArray macro.</summary>
/// <returns>If successful, returns nonzero, and the buffer at *lParam* receives the column index of each column in the control in the order they appear from left to right. Otherwise, the return value is zero.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getcolumnorderarray">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETCOLUMNORDERARRAY = 4155U;
/// <summary>Sets the hot item for a list-view control. You can send this message explicitly or use the ListView\_SetHotItem macro.</summary>
/// <returns>Returns the index of the item that was previously hot.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-sethotitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETHOTITEM = 4156U;
/// <summary>Retrieves the index of the hot item. You can send this message explicitly or use the ListView\_GetHotItem macro.</summary>
/// <returns>Returns the index of the item that is hot.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-gethotitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETHOTITEM = 4157U;
/// <summary>Sets the HCURSOR value that the list-view control uses when the pointer is over an item while hot tracking is enabled.</summary>
/// <returns>Returns an HCURSOR value that is the previous hot cursor.</returns>
/// <remarks>A list-view control uses hot tracking and hover selection when the [**LVS\_EX\_TRACKSELECT**](extended-list-view-styles.md) style is set.</remarks>
internal const uint LVM_SETHOTCURSOR = 4158U;
/// <summary>Retrieves the HCURSOR value used when the pointer is over an item while hot tracking is enabled. You can send this message explicitly or use the ListView\_GetHotCursor macro.</summary>
/// <returns>Returns an HCURSOR value that is the handle to the cursor that the list-view control uses when hot tracking is enabled.</returns>
/// <remarks>A list-view control uses hot tracking and hover selection when the [**LVS\_EX\_TRACKSELECT**](extended-list-view-styles.md) style is set.</remarks>
internal const uint LVM_GETHOTCURSOR = 4159U;
/// <summary>Calculates the approximate width and height required to display a given number of items. You can send this message explicitly or use the ListView\_ApproximateViewRect macro.</summary>
/// <returns>Returns a **DWORD** value that holds the approximate width (in the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85))) and height (in the [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85))) needed to display the items, in pixels.</returns>
/// <remarks>Setting the size of the list-view control based on the dimensions provided by this message can optimize redraw and reduce flicker.</remarks>
internal const uint LVM_APPROXIMATEVIEWRECT = 4160U;
/// <summary>Sets the working areas within a list-view control. You can send this message explicitly or use the ListView\_SetWorkAreas macro.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setworkareas">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETWORKAREAS = 4161U;
/// <summary>Retrieves the working areas from a list-view control. You can send this message explicitly or use the ListView\_GetWorkAreas macro.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getworkareas">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETWORKAREAS = 4166U;
/// <summary>Retrieves the number of working areas in a list-view control. You can send this message explicitly or use the ListView\_GetNumberOfWorkAreas macro.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getnumberofworkareas">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETNUMBEROFWORKAREAS = 4169U;
/// <summary>Retrieves the selection mark from a list-view control. You can send this message explicitly or use the ListView\_GetSelectionMark macro.</summary>
/// <returns>Returns the zero-based selection mark, or -1 if there is no selection mark.</returns>
/// <remarks>The *selection mark* is the item index from which a multiple selection starts.</remarks>
internal const uint LVM_GETSELECTIONMARK = 4162U;
/// <summary>Sets the selection mark in a list-view control. You can send this message explicitly or use the ListView\_SetSelectionMark macro.</summary>
/// <returns>Returns the previous selection mark, or -1 if there is no previous selection mark.</returns>
/// <remarks>The *selection mark* is the item index from which a multiple selection starts. This message does not affect the selection state of the item.</remarks>
internal const uint LVM_SETSELECTIONMARK = 4163U;
/// <summary>Sets the amount of time which the mouse cursor must hover over an item before it is selected. You can send this message explicitly or use the ListView\_SetHoverTime macro.</summary>
/// <returns>Returns the previous hover time.</returns>
/// <remarks>The hover time only affects list-view controls that have the [**LVS\_EX\_TRACKSELECT**](extended-list-view-styles.md), [**LVS\_EX\_ONECLICKACTIVATE**](extended-list-view-styles.md), or [**LVS\_EX\_TWOCLICKACTIVATE**](extended-list-view-styles.md) extended list-view style.</remarks>
internal const uint LVM_SETHOVERTIME = 4167U;
/// <summary>Retrieves the amount of time that the mouse cursor must hover over an item before it is selected. You can send this message explicitly or use the ListView\_GetHoverTime macro.</summary>
/// <returns>Returns the amount of time, in milliseconds, that the mouse cursor must hover over an item before it is selected. If the return value is (**DWORD**)-1, then the hover time is the default hover time.</returns>
/// <remarks>The hover time only affects list-view controls that have the [**LVS\_EX\_TRACKSELECT**](extended-list-view-styles.md), [**LVS\_EX\_ONECLICKACTIVATE**](extended-list-view-styles.md), or [**LVS\_EX\_TWOCLICKACTIVATE**](extended-list-view-styles.md) extended list-view style.</remarks>
internal const uint LVM_GETHOVERTIME = 4168U;
/// <summary>Sets the tooltip control that the list-view control will use to display tooltips. You can send this message explicitly or use the ListView\_SetToolTips macro.</summary>
/// <returns>Returns the handle to the previous tooltip control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-settooltips">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETTOOLTIPS = 4170U;
/// <summary>Retrieves the tooltip control that the list-view control uses to display tooltips. You can send this message explicitly or use the ListView\_GetToolTips macro.</summary>
/// <returns>Returns the handle of the tooltip control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-gettooltips">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETTOOLTIPS = 4174U;
/// <summary>Uses an application-defined comparison function to sort the items of a list-view control. The index of each item changes to reflect the new sequence. You can send this message explicitly or by using the ListView\_SortItemsEx macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>The comparison function has the following form: </para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-sortitemsex#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SORTITEMSEX = 4177U;
/// <summary>Sets the background image in a list-view control. You can send this message explicitly or by using the ListView\_SetBkImage macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. Returns zero if the **ulFlags** member of the [**LVBKIMAGE**](/windows/win32/api/commctrl/ns-commctrl-lvbkimagea) structure is **LVBKIF\_SOURCE\_NONE**.</returns>
/// <remarks>Because the list-view control uses OLE COM to manipulate the background images, the calling application must call [**CoInitialize**](/windows/desktop/api/objbase/nf-objbase-coinitialize) or [**OleInitialize**](/windows/desktop/api/ole2/nf-ole2-oleinitialize) before sending this message. It is best to call one of these functions when the application is initialized and call either [**CoUninitialize**](/windows/desktop/api/combaseapi/nf-combaseapi-couninitialize) or [**OleUninitialize**](/windows/desktop/api/ole2/nf-ole2-oleuninitialize) when the application is terminating.</remarks>
internal const uint LVM_SETBKIMAGEA = 4164U;
/// <summary>Sets the background image in a list-view control. You can send this message explicitly or by using the ListView\_SetBkImage macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. Returns zero if the **ulFlags** member of the [**LVBKIMAGE**](/windows/win32/api/commctrl/ns-commctrl-lvbkimagea) structure is **LVBKIF\_SOURCE\_NONE**.</returns>
/// <remarks>Because the list-view control uses OLE COM to manipulate the background images, the calling application must call [**CoInitialize**](/windows/desktop/api/objbase/nf-objbase-coinitialize) or [**OleInitialize**](/windows/desktop/api/ole2/nf-ole2-oleinitialize) before sending this message. It is best to call one of these functions when the application is initialized and call either [**CoUninitialize**](/windows/desktop/api/combaseapi/nf-combaseapi-couninitialize) or [**OleUninitialize**](/windows/desktop/api/ole2/nf-ole2-oleuninitialize) when the application is terminating.</remarks>
internal const uint LVM_SETBKIMAGEW = 4234U;
/// <summary>Gets the background image in a list-view control. You can send this message explicitly or by using the ListView\_GetBkImage macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getbkimage">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETBKIMAGEA = 4165U;
/// <summary>Gets the background image in a list-view control. You can send this message explicitly or by using the ListView\_GetBkImage macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getbkimage">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETBKIMAGEW = 4235U;
/// <summary>Sets the index of the selected column.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>The column indices are stored in an **int** array. See the **puColumns** member of [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema). > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setselectedcolumn#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETSELECTEDCOLUMN = 4236U;
/// <summary>Sets the view of a list-view control.</summary>
/// <returns>Returns 1 if successful, or -1 otherwise. For example, -1 is returned if the view is invalid.</returns>
/// <remarks>
/// <para>Following are the values for views. - LV\_VIEW\_DETAILS - LV\_VIEW\_ICON - LV\_VIEW\_LIST - LV\_VIEW\_SMALLICON - LV\_VIEW\_TILE > [!Note] > To use this message, you must provide a manifest specifying Comctl32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setview#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETVIEW = 4238U;
/// <summary>Retrieves the current view of a list-view control.</summary>
/// <returns>Returns a **DWORD** that specifies the current view.</returns>
/// <remarks>
/// <para>Following are the values for views. - LV\_VIEW\_DETAILS - LV\_VIEW\_ICON - LV\_VIEW\_LIST - LV\_VIEW\_SMALLICON - LV\_VIEW\_TILE > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getview#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETVIEW = 4239U;
/// <summary>Inserts a group into a list-view control.</summary>
/// <returns>Returns the index of the item that the group was added to, or -1 if the operation failed.</returns>
/// <remarks>
/// <para>To turn on group mode, call [**LVM\_ENABLEGROUPVIEW**](lvm-enablegroupview.md) or [**ListView\_EnableGroupView**](/windows/desktop/api/Commctrl/nf-commctrl-listview_enablegroupview). A group cannot be inserted into an empty list-view control. Be sure to set the **iGroupId** in the item(s) the group was added to. Otherwise after [**LVM\_ENABLEGROUPVIEW**](lvm-enablegroupview.md) message processing with **TRUE** the listview control will not show any items. > [!Note] > To use this message, you must provide a manifest specifying Comclt32 version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-insertgroup#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_INSERTGROUP = 4241U;
/// <summary>Sets group information.</summary>
/// <returns>Returns the ID of the group if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>To change a group ID of an existing group add <b>LVGF_GROUPID</b> to <b>LVGROUP.mask</b> and set <b>LVGROUP.iGroupId</b> to the new ID. The call will fail if <b>LVGROUP.iGroupId</b> contains ID of an existing group. To update other properties of an existing group (e.g. update an alignment of the header or footer text for the group, <b>uAlign</b>) <b>LVGROUP.mask</b> must not contain <b>LVGF_GROUPID</b>, else the update will fail. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setgroupinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETGROUPINFO = 4243U;
/// <summary>Gets group information.</summary>
/// <returns>Returns the ID of the group if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>Before attempting to retrieve the header for a group, first ensure that the group does not have the LBGS\_NOHEADER style. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getgroupinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETGROUPINFO = 4245U;
/// <summary>Removes a group from a list-view control.</summary>
/// <returns>Returns the index of the group if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-removegroup#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_REMOVEGROUP = 4246U;
/// <summary>LVM\_MOVEGROUP message</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-movegroup">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_MOVEGROUP = 4247U;
/// <summary>Gets the number of groups.</summary>
/// <returns>Returns the number of groups.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getgroupcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETGROUPCOUNT = 4248U;
/// <summary>Gets information on a specified group. Send this message explicitly or by using the ListView\_GetGroupInfoByIndex macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getgroupinfobyindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETGROUPINFOBYINDEX = 4249U;
/// <summary>LVM\_MOVEITEMTOGROUP message</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-moveitemtogroup">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_MOVEITEMTOGROUP = 4250U;
/// <summary>Gets the rectangle for a specified group. Send this message explicitly or by using the ListView\_GetGroupRect macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getgrouprect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETGROUPRECT = 4194U;
/// <summary>Sets information about the display of groups.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setgroupmetrics#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETGROUPMETRICS = 4251U;
/// <summary>Gets information about the display of groups.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getgroupmetrics#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETGROUPMETRICS = 4252U;
/// <summary>Enables or disables whether the items in a list-view control display as a group.</summary>
/// <returns>
/// <para>Returns one of the following values.</para>
/// <para>| Return code | Description | |-----------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------| | <dl> <dt>**0**</dt> </dl> | The ability to display list-view items as a group is already enabled or disabled.<br/> | | <dl> <dt>**1**</dt> </dl> | The state of the control was successfully changed.<br/> | | <dl> <dt>**-1**</dt> </dl> | The operation failed.<br/> |</para>
/// </returns>
/// <remarks>
/// <para>**LVM\_ENABLEGROUPVIEW** is not supported under the [**LVS\_OWNERDATA**](list-view-window-styles.md) style. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-enablegroupview#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_ENABLEGROUPVIEW = 4253U;
/// <summary>Uses an application-defined comparison function to sort groups by ID within a list-view control.</summary>
/// <returns>Returns 1 if successful, or 0 otherwise.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-sortgroups#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SORTGROUPS = 4254U;
/// <summary>Inserts a group into an ordered list of groups.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>The ordering of the list is based on the ID of the group. The order is defined by the application-defined ordering function, [**LVGroupCompare**](/windows/win32/api/commctrl/nc-commctrl-pfnlvgroupcompare), that is passed in the [**LVINSERTGROUPSORTED**](/windows/win32/api/commctrl/ns-commctrl-lvinsertgroupsorted) structure by the *wParam* parameter. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-insertgroupsorted#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_INSERTGROUPSORTED = 4255U;
/// <summary>Removes all groups from a list-view control.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-removeallgroups#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_REMOVEALLGROUPS = 4256U;
/// <summary>Determines whether the list-view control has a specified group.</summary>
/// <returns>Returns **TRUE** if the list-view control has the specified group, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-hasgroup#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_HASGROUP = 4257U;
/// <summary>Gets the state for a specified group. Send this message explicitly or by using the ListView\_GetGroupState macro.</summary>
/// <returns>Returns the combination of state values that are set. For example, if *lParam* is LVGS\_COLLAPSED and the value returned is zero, the LVGS\_COLLAPSED state is not set. Zero is returned if the group is not found.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getgroupstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETGROUPSTATE = 4188U;
/// <summary>Gets the group that has the focus. Send this message explicitly or by using the ListView\_GetFocusedGroup macro.</summary>
/// <returns>Returns the index of the group with state of LVGS\_FOCUSED, or -1 if there is no group with state of LVGS\_FOCUSED.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getfocusedgroup">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETFOCUSEDGROUP = 4189U;
/// <summary>Sets information that a list-view control uses in tile view.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</remarks>
internal const uint LVM_SETTILEVIEWINFO = 4258U;
/// <summary>Retrieves information about a list-view control in tile view.</summary>
/// <returns>Return value not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-gettileviewinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETTILEVIEWINFO = 4259U;
/// <summary>Sets information for an existing tile of a list-view control.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>**LVM\_SETTILEINFO** is not supported under the [**LVS\_OWNERDATA**](list-view-window-styles.md) style. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-settileinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETTILEINFO = 4260U;
/// <summary>Retrieves information about a tile in a list-view control.</summary>
/// <returns>Return value not used.</returns>
/// <remarks>
/// <para>Tile view is a new way of arranging and displaying items in a list-view control. The other views are icon, small icon, details, and list. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-gettileinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETTILEINFO = 4261U;
/// <summary>Sets the insertion point to the defined position.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise. **FALSE** is returned if the size in the **cbSize** member of the [**LVINSERTMARK**](/windows/desktop/api/Commctrl/ns-commctrl-lvinsertmark) structure does not equal the actual size of the structure, or when an insertion point does not apply in the current view.</returns>
/// <remarks>
/// <para>An insertion point can only appear if the list-view control is in icon view, small icon view, or tile view, and is not in group-view mode. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setinsertmark#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETINSERTMARK = 4262U;
/// <summary>Retrieves the position of the insertion point.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise. **FALSE** is returned if the size in the **cbSize** member of the [**LVINSERTMARK**](/windows/desktop/api/Commctrl/ns-commctrl-lvinsertmark) structure does not equal the actual size of the structure.</returns>
/// <remarks>
/// <para>An insertion point can appear only if the list-view control is in icon view, small icon view, or tile view, and is not in group-view mode. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getinsertmark#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETINSERTMARK = 4263U;
/// <summary>Retrieves the insertion point closest to a specified point.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise. **FALSE** is returned if the size in the **cbSize** member of the [**LVINSERTMARK**](/windows/desktop/api/Commctrl/ns-commctrl-lvinsertmark) structure does not equal the actual size of the structure, or when an insertion point does not apply in the current view.</returns>
/// <remarks>
/// <para>An insertion point can only appear if the list-view control is in icon view, small icon view, or tile view and is not in group-view mode. If insertion points do not apply for the view, the [**LVINSERTMARK**](/windows/desktop/api/Commctrl/ns-commctrl-lvinsertmark) structure contains a -1 in the **iItem** member. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-insertmarkhittest#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_INSERTMARKHITTEST = 4264U;
/// <summary>Retrieves the rectangle that bounds the insertion point.</summary>
/// <returns>
/// <para>Returns one of the following values.</para>
/// <para>| Return code | Description | |----------------------------------------------------------------------------------|--------------------------------------| | <dl> <dt>**0**</dt> </dl> | No insertion point found.<br/> | | <dl> <dt>**1**</dt> </dl> | Insertion point found.<br/> |</para>
/// </returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getinsertmarkrect#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETINSERTMARKRECT = 4265U;
/// <summary>Sets the color of the insertion point.</summary>
/// <returns>Returns **COLORREF** structure set to the previous color.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setinsertmarkcolor#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETINSERTMARKCOLOR = 4266U;
/// <summary>Retrieves the color of the insertion point.</summary>
/// <returns>Returns a **COLORREF** structure that contains the color of the insertion point.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getinsertmarkcolor#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETINSERTMARKCOLOR = 4267U;
/// <summary>Sets tooltip text in delayed response to the LVN\_GETINFOTIP notification.</summary>
/// <returns>Returns **TRUE** if the tooltip text is set successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>The **LVM\_SETINFOTIP** message lets an application calculate infotips in the background by performing the following steps: 1. In response to the [LVN\_GETINFOTIP](lvn-getinfotip.md) notification, set the **pszText** member of the [**NMLVGETINFOTIP**](/windows/win32/api/commctrl/ns-commctrl-nmlvgetinfotipa) structure to an empty string and return 0. 2. In the background, compute the infotip. 3. After computing the infotip, send the **LVM\_SETINFOTIP** message, setting the **pszText** member of the [**LVSETINFOTIP**](/windows/win32/api/commctrl/ns-commctrl-lvsetinfotip) structure to the infotip and the **iItem** and **iSubItem** members to the item and sub-item to which the infotip applies. The text passed to the **LVM\_SETINFOTIP** message appears only if the item and sub-item described by the [**LVSETINFOTIP**](/windows/win32/api/commctrl/ns-commctrl-lvsetinfotip) structure are still in a state that requires an infotip > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setinfotip#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETINFOTIP = 4269U;
/// <summary>Retrieves an integer that specifies the selected column.</summary>
/// <returns>Returns an **UINT** that specifies the selected column.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getselectedcolumn#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETSELECTEDCOLUMN = 4270U;
/// <summary>Checks whether the list-view control has group view enabled.</summary>
/// <returns>Returns **TRUE** if group view is enabled, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-isgroupviewenabled#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_ISGROUPVIEWENABLED = 4271U;
/// <summary>Retrieves the color of the border of a list-view control if the LVS\_EX\_BORDERSELECT extended window style is set.</summary>
/// <returns>Returns a **COLORREF** structure that contains the color of the border of a list-view control.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getoutlinecolor#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETOUTLINECOLOR = 4272U;
/// <summary>Sets the color of the border of a list-view control if the LVS\_EX\_BORDERSELECT extended window style is set.</summary>
/// <returns>Returns **COLORREF** structure that contains the outline color.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setoutlinecolor#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETOUTLINECOLOR = 4273U;
/// <summary>Cancels an item text editing operation.</summary>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para>This message causes a an [LVN\_ENDLABELEDIT](lvn-endlabeledit.md) notification to be sent.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-canceleditlabel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_CANCELEDITLABEL = 4275U;
/// <summary>Maps the index of an item to a unique ID.</summary>
/// <returns>Returns a unique ID.</returns>
/// <remarks>
/// <para>List-view controls internally track items by index. This can present problems because indexes can change during the control's lifetime. The list-view control can tag an item with an ID when the item is created. You can use this ID to guarantee uniqueness during the lifetime of the list-view control. To uniquely identify an item, take the index that is returned from a call such as [**IComponent::GetDisplayInfo**](/windows/desktop/api/mmc/nf-mmc-icomponent-getdisplayinfo) and call **LVM\_MAPINDEXTOID**. The return value is a unique ID. > [!Note] > In a multithreaded environment, the index is only guaranteed on the thread that hosts the list-view control, not on background threads.</para>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-mapindextoid#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_MAPINDEXTOID = 4276U;
/// <summary>Maps the ID of an item to an index.</summary>
/// <returns>Returns the most current index.</returns>
/// <remarks>
/// <para>List-view controls internally track items by index. This can present problems because indexes can change during the control's lifetime. The list-view control can tag an item with an ID when the item is created. You can use this ID to guarantee uniqueness during the lifetime of the list-view control. To uniquely identify an item, take the index that is returned from a call such as [**IComponent::GetDisplayInfo**](/windows/desktop/api/mmc/nf-mmc-icomponent-getdisplayinfo) and call [**LVM\_MAPINDEXTOID**](lvm-mapindextoid.md). The return value is a unique ID. If you need the index of an item after an ID is created you can call **LVM\_MAPIDTOINDEX** with the unique ID and it returns the most current index. **LVM\_MAPIDTOINDEX** is not supported under the [**LVS\_OWNERDATA**](list-view-window-styles.md) style. > [!Note] > In a multithreaded environment, the index is only guaranteed on the thread that hosts the list-view control, not on background threads.</para>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-mapidtoindex#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_MAPIDTOINDEX = 4277U;
/// <summary>Indicates if an item in the list-view control is visible. Send this message explicitly or by using the ListView\_IsItemVisible macro.</summary>
/// <returns>Returns **TRUE** if visible, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-isitemvisible">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_ISITEMVISIBLE = 4278U;
/// <summary>Gets the text meant for display when the list-view control appears empty. Send this message explicitly or by using the ListView\_GetEmptyText macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getemptytext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETEMPTYTEXT = 4300U;
/// <summary>Retrieves the coordinates of the footer for a list-view control. Send this message explicitly or by using the ListView\_GetFooterRect macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getfooterrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETFOOTERRECT = 4301U;
/// <summary>Gets information about the footer of a list-view control. Send this message explicitly or by using the ListView\_GetFooterInfo macro.</summary>
/// <returns>Returns **TRUE**.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getfooterinfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETFOOTERINFO = 4302U;
/// <summary>Gets the coordinates of a footer for a specified item in a list-view control. Send this message explicitly or by using the ListView\_GetFooterItemRect macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getfooteritemrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETFOOTERITEMRECT = 4303U;
/// <summary>Gets information on a footer item in a list-view control. Send this message explicitly or by using the ListView\_GetFooterItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getfooteritem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETFOOTERITEM = 4304U;
/// <summary>Retrieves the bounding rectangle for all or part of a subitem in the current view of a list-view control. Send this message explicitly or by using the ListView\_GetItemIndexRect macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getitemindexrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETITEMINDEXRECT = 4305U;
/// <summary>Sets the state of a list-view item. Send this message explicitly or by using the ListView\_SetItemIndexState macro.</summary>
/// <returns>
/// <para>Returns one of the following values of type **HRESULT**.</para>
/// <para>| Return code | Description | |----------------------------------------------------------------------------------------------|-------------------------------------------------------------------| | <dl> <dt>**E\_FAIL**</dt> </dl> | The state could not be set.<br/> | | <dl> <dt>**E\_UNEXPECTED**</dt> </dl> | The list-view control was not ready for the operation.<br/> | | <dl> <dt>**S\_OK**</dt> </dl> | The operation was successful.<br/> |</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-setitemindexstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_SETITEMINDEXSTATE = 4306U;
/// <summary>Retrieves the index of an item in a specified list-view control that matches the specified properties and relationship to another item. Send this message explicitly or by using the ListView\_GetNextItemIndex macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>Note that the following flags, for use only with Windows Vista, are mutually exclusive of any other flags in use: LVNI\_PREVIOUS, LVNI\_VISIBLEONLY, LVNI\_SAMEGROUPONLY, LVNI\_VISIBLEORDER, LVNI\_DIRECTIONMASK, and LVNI\_STATEMASK.</remarks>
internal const uint LVM_GETNEXTITEMINDEX = 4307U;
/// <summary>Sets the background image in a list-view control. You can send this message explicitly or by using the ListView\_SetBkImage macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. Returns zero if the **ulFlags** member of the [**LVBKIMAGE**](/windows/win32/api/commctrl/ns-commctrl-lvbkimagea) structure is **LVBKIF\_SOURCE\_NONE**.</returns>
/// <remarks>Because the list-view control uses OLE COM to manipulate the background images, the calling application must call [**CoInitialize**](/windows/desktop/api/objbase/nf-objbase-coinitialize) or [**OleInitialize**](/windows/desktop/api/ole2/nf-ole2-oleinitialize) before sending this message. It is best to call one of these functions when the application is initialized and call either [**CoUninitialize**](/windows/desktop/api/combaseapi/nf-combaseapi-couninitialize) or [**OleUninitialize**](/windows/desktop/api/ole2/nf-ole2-oleuninitialize) when the application is terminating.</remarks>
internal const uint LVM_SETBKIMAGE = 4234U;
/// <summary>Gets the background image in a list-view control. You can send this message explicitly or by using the ListView\_GetBkImage macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvm-getbkimage">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVM_GETBKIMAGE = 4235U;
internal const uint LVN_FIRST = 4294967196U;
internal const uint LVN_LAST = 4294967097U;
/// <summary>Notifies a list-view control's parent window that an item is changing. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to prevent the change, or **FALSE** to allow the change.</returns>
/// <remarks>If the list-view control has the [**LVS\_OWNERDATA**](list-view-window-styles.md) style, LVN\_ITEMCHANGING notification codes are not sent.</remarks>
internal const uint LVN_ITEMCHANGING = 4294967196U;
/// <summary>Notifies a list-view control's parent window that an item has changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>If a list-view control has the [**LVS\_OWNERDATA**](list-view-window-styles.md) style, and the user selects a range of items by holding down the SHIFT key and clicking the mouse, LVN\_ITEMCHANGED notification codes are not sent for each selected or deselected item. Instead, you will receive a single [LVN\_ODSTATECHANGED](lvn-odstatechanged.md) notification code, indicating that a range of items has changed state.</remarks>
internal const uint LVN_ITEMCHANGED = 4294967195U;
/// <summary>Notifies a list-view control's parent window that a new item was inserted. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_INSERTITEM = 4294967194U;
/// <summary>Notifies a list-view control's parent window that an item is about to be deleted. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>Do not add, delete, or rearrange items in the list view while processing this notification code.</remarks>
internal const uint LVN_DELETEITEM = 4294967193U;
/// <summary>Notifies a list-view control's parent window that all items in the control are about to be deleted. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>To suppress subsequent [LVN\_DELETEITEM](lvn-deleteitem.md) notification codes, return **TRUE**. To receive subsequent [LVN\_DELETEITEM](lvn-deleteitem.md) notification codes, return **FALSE**.</para>
/// </returns>
/// <remarks>
/// <para>A list-view control sends the [**LVM\_DELETEALLITEMS**](lvm-deleteallitems.md) notification code when it is destroyed or when it receives the **LVM\_DELETEALLITEMS** message. If **LVM\_DELETEALLITEMS** does not return **TRUE**, the control will also send an [LVN\_DELETEITEM](lvn-deleteitem.md) notification code as each item is deleted. If the [**LVM\_DELETEALLITEMS**](lvm-deleteallitems.md) message handler is in a dialog box procedure, return **TRUE** from the dialog box procedure, and use the [**SetWindowLong**](/windows/desktop/api/winuser/nf-winuser-setwindowlonga) function with DWL\_MSGRESULT to set the message return value.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-deleteallitems#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_DELETEALLITEMS = 4294967192U;
/// <summary>Notifies a list-view control's parent window about the start of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>To allow the user to edit the label, return **FALSE**. To prevent the user from editing the label, return **TRUE**.</para>
/// </returns>
/// <remarks>
/// <para>When label editing begins, an edit control is created, positioned, and initialized. Before it is displayed, the list-view control sends its parent window an LVN\_BEGINLABELEDIT notification code. To customize label editing, implement a handler for LVN\_BEGINLABELEDIT and have it send an [**LVM\_GETEDITCONTROL**](lvm-geteditcontrol.md) message to the list-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual **EM\_XXX** messages. When the user cancels or completes the editing, the parent window receives an [LVN\_ENDLABELEDIT](lvn-endlabeledit.md) notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-beginlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_BEGINLABELEDITA = 4294967191U;
/// <summary>Notifies a list-view control's parent window about the start of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>To allow the user to edit the label, return **FALSE**. To prevent the user from editing the label, return **TRUE**.</para>
/// </returns>
/// <remarks>
/// <para>When label editing begins, an edit control is created, positioned, and initialized. Before it is displayed, the list-view control sends its parent window an LVN\_BEGINLABELEDIT notification code. To customize label editing, implement a handler for LVN\_BEGINLABELEDIT and have it send an [**LVM\_GETEDITCONTROL**](lvm-geteditcontrol.md) message to the list-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual **EM\_XXX** messages. When the user cancels or completes the editing, the parent window receives an [LVN\_ENDLABELEDIT](lvn-endlabeledit.md) notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-beginlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_BEGINLABELEDITW = 4294967121U;
/// <summary>Notifies a list-view control's parent window about the end of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>If the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure is non-**NULL**, return **TRUE** to set the item's label to the edited text. Return **FALSE** to reject the edited text and revert to the original label. If the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure is **NULL**, the return value is ignored.</para>
/// </returns>
/// <remarks>
/// <para>The return value of the dialog procedure is whether the message was handled. The second return value must be set by calling [**SetwindowLongPtr**](/windows/win32/api/winuser/nf-winuser-setwindowlongptra) with **DWLP_MSGRESULT**. When the user begins editing an item label, the parent window of the list-view control receives an [LVN\_BEGINLABELEDIT](lvn-beginlabeledit.md) notification code. When the user cancels or completes the editing, the parent window receives an LVN\_ENDLABELEDIT notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-endlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_ENDLABELEDITA = 4294967190U;
/// <summary>Notifies a list-view control's parent window about the end of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>If the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure is non-**NULL**, return **TRUE** to set the item's label to the edited text. Return **FALSE** to reject the edited text and revert to the original label. If the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure is **NULL**, the return value is ignored.</para>
/// </returns>
/// <remarks>
/// <para>The return value of the dialog procedure is whether the message was handled. The second return value must be set by calling [**SetwindowLongPtr**](/windows/win32/api/winuser/nf-winuser-setwindowlongptra) with **DWLP_MSGRESULT**. When the user begins editing an item label, the parent window of the list-view control receives an [LVN\_BEGINLABELEDIT](lvn-beginlabeledit.md) notification code. When the user cancels or completes the editing, the parent window receives an LVN\_ENDLABELEDIT notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-endlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_ENDLABELEDITW = 4294967120U;
/// <summary>Notifies a list-view control's parent window that a column header was clicked while the list-view control was in report mode. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>Using header control formats such as HDF\_CHECKBOX to modify the format of column headers in a list-view control causes the control to send the [HDN\_ITEMSTATEICONCLICK](hdn-itemstateiconclick.md) notification code instead of LVN\_COLUMNCLICK when a header item is clicked.</remarks>
internal const uint LVN_COLUMNCLICK = 4294967188U;
/// <summary>Notifies a list-view control's parent window that a drag-and-drop operation involving the left mouse button is being initiated. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-begindrag">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_BEGINDRAG = 4294967187U;
/// <summary>Notifies a list-view control's parent window that a drag-and-drop operation involving the right mouse button is being initiated. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-beginrdrag">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_BEGINRDRAG = 4294967185U;
/// <summary>Sent by a virtual list-view control when the contents of its display area have changed.</summary>
/// <returns>The application receiving this notification code must return zero.</returns>
/// <remarks>
/// <para>Handling this message allows the application to update the item information held in cache so that it is readily available when an [LVN\_GETDISPINFO](lvn-getdispinfo.md) notification code is sent. Note that this notification code is not always an exact representation of the items that will be requested by [LVN\_GETDISPINFO](lvn-getdispinfo.md). Therefore, if the requested item is not cached while handling LVN\_GETDISPINFO, the application must be prepared to supply the requested information from a source outside the cache.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-odcachehint#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_ODCACHEHINT = 4294967183U;
/// <summary>Sent by a virtual list-view control when it needs the owner to find a particular callback item.</summary>
/// <returns>Return the index of the item found, or -1 if no item is found.</returns>
/// <remarks>Search information is sent in the form of an [**LVFINDINFO**](/windows/win32/api/commctrl/ns-commctrl-lvfindinfoa) structure, which is a member of the [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure.</remarks>
internal const uint LVN_ODFINDITEMA = 4294967144U;
/// <summary>Sent by a virtual list-view control when it needs the owner to find a particular callback item.</summary>
/// <returns>Return the index of the item found, or -1 if no item is found.</returns>
/// <remarks>Search information is sent in the form of an [**LVFINDINFO**](/windows/win32/api/commctrl/ns-commctrl-lvfindinfoa) structure, which is a member of the [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure.</remarks>
internal const uint LVN_ODFINDITEMW = 4294967117U;
/// <summary>Sent by a list-view control when the user activates an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The application receiving this notification code must return zero.</returns>
/// <remarks>To obtain the items being activated, the receiving application should use the [**LVM\_GETSELECTEDCOUNT**](lvm-getselectedcount.md) message to retrieve the number of items that are selected and then send the [**LVM\_GETNEXTITEM**](lvm-getnextitem.md) message with **LVNI\_SELECTED** until all of the items have been retrieved.</remarks>
internal const uint LVN_ITEMACTIVATE = 4294967182U;
/// <summary>Sent by a list-view control when the state of an item or range of items has changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The application receiving this notification code must return zero.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-odstatechanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_ODSTATECHANGED = 4294967181U;
/// <summary>Sent by a virtual list-view control when it needs the owner to find a particular callback item.</summary>
/// <returns>Return the index of the item found, or -1 if no item is found.</returns>
/// <remarks>Search information is sent in the form of an [**LVFINDINFO**](/windows/win32/api/commctrl/ns-commctrl-lvfindinfoa) structure, which is a member of the [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure.</remarks>
internal const uint LVN_ODFINDITEM = 4294967117U;
/// <summary>Sent by a list-view control when the user moves the mouse over an item. This notification code is only sent by list-view controls that have the LVS\_EX\_TRACKSELECT extended list-view style. It is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return zero to allow the list view to perform its normal track select processing. If the application returns nonzero, the item will not be selected.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-hottrack">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_HOTTRACK = 4294967175U;
/// <summary>Sent by a list-view control to its parent window. It is a request for the parent window to provide information needed to display or sort a list-view item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts *lParam* to retrieve the [**NMLVDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmlvdispinfoa) structure. The *wParam* parameter contains the notification code. A list-view control sends the **LVN\_GETDISPINFO** notification code to retrieve item information that is stored by the application rather than the control. The information can be text or icon information for an item. It can also be item state information. See the [**LVM\_SETCALLBACKMASK**](lvm-setcallbackmask.md) message for more information on implementing item state on a callback basis. For more information on list-view callbacks, see [Callback Items and the Callback Mask](list-view-controls-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-getdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_GETDISPINFOA = 4294967146U;
/// <summary>Sent by a list-view control to its parent window. It is a request for the parent window to provide information needed to display or sort a list-view item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts *lParam* to retrieve the [**NMLVDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmlvdispinfoa) structure. The *wParam* parameter contains the notification code. A list-view control sends the **LVN\_GETDISPINFO** notification code to retrieve item information that is stored by the application rather than the control. The information can be text or icon information for an item. It can also be item state information. See the [**LVM\_SETCALLBACKMASK**](lvm-setcallbackmask.md) message for more information on implementing item state on a callback basis. For more information on list-view callbacks, see [Callback Items and the Callback Mask](list-view-controls-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-getdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_GETDISPINFOW = 4294967119U;
/// <summary>Notifies a list-view control's parent window that it must update the information it maintains for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>The notification receiver casts *lParam* to retrieve the [**NMLVDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmlvdispinfoa) structure. The *wParam* parameter contains the message code.</remarks>
internal const uint LVN_SETDISPINFOA = 4294967145U;
/// <summary>Notifies a list-view control's parent window that it must update the information it maintains for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>The notification receiver casts *lParam* to retrieve the [**NMLVDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmlvdispinfoa) structure. The *wParam* parameter contains the message code.</remarks>
internal const uint LVN_SETDISPINFOW = 4294967118U;
/// <summary>Notifies a list-view control's parent window about the start of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>To allow the user to edit the label, return **FALSE**. To prevent the user from editing the label, return **TRUE**.</para>
/// </returns>
/// <remarks>
/// <para>When label editing begins, an edit control is created, positioned, and initialized. Before it is displayed, the list-view control sends its parent window an LVN\_BEGINLABELEDIT notification code. To customize label editing, implement a handler for LVN\_BEGINLABELEDIT and have it send an [**LVM\_GETEDITCONTROL**](lvm-geteditcontrol.md) message to the list-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual **EM\_XXX** messages. When the user cancels or completes the editing, the parent window receives an [LVN\_ENDLABELEDIT](lvn-endlabeledit.md) notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-beginlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_BEGINLABELEDIT = 4294967121U;
/// <summary>Notifies a list-view control's parent window about the end of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>If the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure is non-**NULL**, return **TRUE** to set the item's label to the edited text. Return **FALSE** to reject the edited text and revert to the original label. If the **pszText** member of the [**LVITEM**](/windows/win32/api/commctrl/ns-commctrl-lvitema) structure is **NULL**, the return value is ignored.</para>
/// </returns>
/// <remarks>
/// <para>The return value of the dialog procedure is whether the message was handled. The second return value must be set by calling [**SetwindowLongPtr**](/windows/win32/api/winuser/nf-winuser-setwindowlongptra) with **DWLP_MSGRESULT**. When the user begins editing an item label, the parent window of the list-view control receives an [LVN\_BEGINLABELEDIT](lvn-beginlabeledit.md) notification code. When the user cancels or completes the editing, the parent window receives an LVN\_ENDLABELEDIT notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-endlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_ENDLABELEDIT = 4294967120U;
/// <summary>Sent by a list-view control to its parent window. It is a request for the parent window to provide information needed to display or sort a list-view item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts *lParam* to retrieve the [**NMLVDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmlvdispinfoa) structure. The *wParam* parameter contains the notification code. A list-view control sends the **LVN\_GETDISPINFO** notification code to retrieve item information that is stored by the application rather than the control. The information can be text or icon information for an item. It can also be item state information. See the [**LVM\_SETCALLBACKMASK**](lvm-setcallbackmask.md) message for more information on implementing item state on a callback basis. For more information on list-view callbacks, see [Callback Items and the Callback Mask](list-view-controls-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-getdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_GETDISPINFO = 4294967119U;
/// <summary>Notifies a list-view control's parent window that it must update the information it maintains for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>The notification receiver casts *lParam* to retrieve the [**NMLVDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmlvdispinfoa) structure. The *wParam* parameter contains the message code.</remarks>
internal const uint LVN_SETDISPINFO = 4294967118U;
/// <summary>Notifies a list-view control's parent window that a key has been pressed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-keydown">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_KEYDOWN = 4294967141U;
/// <summary>Notifies a list-view control's parent window that a bounding box (marquee) selection has begun. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>To accept the notification code, return zero. To quit the bounding box selection, return nonzero.</returns>
/// <remarks>A *bounding box selection* is the process of clicking the list-view window's client area and dragging to select multiple items simultaneously.</remarks>
internal const uint LVN_MARQUEEBEGIN = 4294967140U;
/// <summary>Sent by a large icon view list-view control that has the LVS\_EX\_INFOTIP extended style.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>This notification code is only sent by list-view controls that have the [**LVS\_EX\_INFOTIP**](extended-list-view-styles.md) extended style. The LVN\_GETINFOTIP notification code is sent only for subitem 0.</remarks>
internal const uint LVN_GETINFOTIPA = 4294967139U;
/// <summary>Sent by a large icon view list-view control that has the LVS\_EX\_INFOTIP extended style.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>This notification code is only sent by list-view controls that have the [**LVS\_EX\_INFOTIP**](extended-list-view-styles.md) extended style. The LVN\_GETINFOTIP notification code is sent only for subitem 0.</remarks>
internal const uint LVN_GETINFOTIPW = 4294967138U;
/// <summary>Sent by a large icon view list-view control that has the LVS\_EX\_INFOTIP extended style.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>This notification code is only sent by list-view controls that have the [**LVS\_EX\_INFOTIP**](extended-list-view-styles.md) extended style. The LVN\_GETINFOTIP notification code is sent only for subitem 0.</remarks>
internal const uint LVN_GETINFOTIP = 4294967138U;
/// <summary>Notifies a list-view control's parent window that an incremental search has started. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts *lParam* to retrieve the [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure. The *wParam* parameter contains the ID of the control that sends this notification code. This notification code gives an application (or the notification receiver) the opportunity to customize an incremental search. For example, if the search items are numeric, the application can perform a numerical search instead of a string search. The application sets the **lParam** member of the [**LVFINDINFO**](/windows/win32/api/commctrl/ns-commctrl-lvfindinfoa) structure contained in [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure to the result of the search, or to another application defined value to fail the search and indicate to the control how to proceed.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-incrementalsearch#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_INCREMENTALSEARCHA = 4294967134U;
/// <summary>Notifies a list-view control's parent window that an incremental search has started. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts *lParam* to retrieve the [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure. The *wParam* parameter contains the ID of the control that sends this notification code. This notification code gives an application (or the notification receiver) the opportunity to customize an incremental search. For example, if the search items are numeric, the application can perform a numerical search instead of a string search. The application sets the **lParam** member of the [**LVFINDINFO**](/windows/win32/api/commctrl/ns-commctrl-lvfindinfoa) structure contained in [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure to the result of the search, or to another application defined value to fail the search and indicate to the control how to proceed.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-incrementalsearch#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_INCREMENTALSEARCHW = 4294967133U;
/// <summary>Notifies a list-view control's parent window that an incremental search has started. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts *lParam* to retrieve the [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure. The *wParam* parameter contains the ID of the control that sends this notification code. This notification code gives an application (or the notification receiver) the opportunity to customize an incremental search. For example, if the search items are numeric, the application can perform a numerical search instead of a string search. The application sets the **lParam** member of the [**LVFINDINFO**](/windows/win32/api/commctrl/ns-commctrl-lvfindinfoa) structure contained in [**NMLVFINDITEM**](/windows/win32/api/commctrl/ns-commctrl-nmlvfinditema) structure to the result of the search, or to another application defined value to fail the search and indicate to the control how to proceed.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-incrementalsearch#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_INCREMENTALSEARCH = 4294967133U;
/// <summary>Sent by a list-view control when the list-view's drop-down button is pressed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts *lParam* to retrieve the [**NMLISTVIEW**](/windows/win32/api/commctrl/ns-commctrl-nmlistview) structure. The *wParam* parameter contains the ID of the control that sends the notification code. If a header control is a child of the list-view, the header control should send this notidication code to the list-view control when the header control receives the [HDN\_DROPDOWN](hdn-dropdown.md) notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-columndropdown#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_COLUMNDROPDOWN = 4294967132U;
/// <summary>Sent by a list-view control when its overflow button is clicked. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The notification receiver casts *lParam* to retrieve the [**NMLISTVIEW**](/windows/win32/api/commctrl/ns-commctrl-nmlistview) structure. The *wParam* parameter contains the ID of the control that sends the notification code. If a header control is a child of the listview, the header control should send this notification code to the listview control when the header control receives the [HDN\_OVERFLOWCLICK](hdn-overflowclick.md) notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-columnoverflowclick#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_COLUMNOVERFLOWCLICK = 4294967130U;
/// <summary>Notifies a list-view control's parent window when a scrolling operation starts. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return value not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this notification code, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-beginscroll#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_BEGINSCROLL = 4294967116U;
/// <summary>Notifies a list-view control's parent window when a scrolling operation ends. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return value not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this notification code, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-endscroll#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_ENDSCROLL = 4294967115U;
/// <summary>Notifies a list-view control's parent window that a link has been clicked on. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The following example shows how an application might respond to this notification code in its [**WM\_NOTIFY**](wm-notify.md) message handler. The example toggles the collapsed state of the group and sets the appropriate link text. </para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/lvn-linkclick#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVN_LINKCLICK = 4294967112U;
/// <summary>Sent by list-view control to its parent window when the control has no items. The LVN\_GETEMPTYMARKUP notification code is a request for the parent window to provide markup text. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return **TRUE** to set the markup text in the list-view control, or **FALSE** otherwise.</returns>
/// <remarks>The notification receiver casts *lParam* to retrieve the [**NMLVEMPTYMARKUP**](/windows/win32/api/commctrl/ns-commctrl-nmlvemptymarkup) structure. The *wParam* parameter contains the ID of the control that sends this message.</remarks>
internal const uint LVN_GETEMPTYMARKUP = 4294967109U;
internal const uint LVNI_ALL = 0U;
internal const uint LVNI_FOCUSED = 1U;
internal const uint LVNI_SELECTED = 2U;
internal const uint LVNI_CUT = 4U;
internal const uint LVNI_DROPHILITED = 8U;
internal const uint LVNI_VISIBLEORDER = 16U;
internal const uint LVNI_PREVIOUS = 32U;
internal const uint LVNI_VISIBLEONLY = 64U;
internal const uint LVNI_SAMEGROUPONLY = 128U;
internal const uint LVNI_ABOVE = 256U;
internal const uint LVNI_BELOW = 512U;
internal const uint LVNI_TOLEFT = 1024U;
internal const uint LVNI_TORIGHT = 2048U;
internal const uint LVS_ICON = 0U;
internal const uint LVS_REPORT = 1U;
internal const uint LVS_SMALLICON = 2U;
internal const uint LVS_LIST = 3U;
internal const uint LVS_TYPEMASK = 3U;
internal const uint LVS_SINGLESEL = 4U;
internal const uint LVS_SHOWSELALWAYS = 8U;
internal const uint LVS_SORTASCENDING = 16U;
internal const uint LVS_SORTDESCENDING = 32U;
internal const uint LVS_SHAREIMAGELISTS = 64U;
internal const uint LVS_NOLABELWRAP = 128U;
internal const uint LVS_AUTOARRANGE = 256U;
internal const uint LVS_EDITLABELS = 512U;
internal const uint LVS_OWNERDATA = 4096U;
internal const uint LVS_NOSCROLL = 8192U;
internal const uint LVS_TYPESTYLEMASK = 64512U;
internal const uint LVS_ALIGNTOP = 0U;
internal const uint LVS_ALIGNLEFT = 2048U;
internal const uint LVS_ALIGNMASK = 3072U;
internal const uint LVS_OWNERDRAWFIXED = 1024U;
internal const uint LVS_NOCOLUMNHEADER = 16384U;
internal const uint LVS_NOSORTHEADER = 32768U;
internal const uint LVS_EX_GRIDLINES = 1U;
internal const uint LVS_EX_SUBITEMIMAGES = 2U;
internal const uint LVS_EX_CHECKBOXES = 4U;
internal const uint LVS_EX_TRACKSELECT = 8U;
internal const uint LVS_EX_HEADERDRAGDROP = 16U;
internal const uint LVS_EX_FULLROWSELECT = 32U;
internal const uint LVS_EX_ONECLICKACTIVATE = 64U;
internal const uint LVS_EX_TWOCLICKACTIVATE = 128U;
internal const uint LVS_EX_FLATSB = 256U;
internal const uint LVS_EX_REGIONAL = 512U;
internal const uint LVS_EX_INFOTIP = 1024U;
internal const uint LVS_EX_UNDERLINEHOT = 2048U;
internal const uint LVS_EX_UNDERLINECOLD = 4096U;
internal const uint LVS_EX_MULTIWORKAREAS = 8192U;
internal const uint LVS_EX_LABELTIP = 16384U;
internal const uint LVS_EX_BORDERSELECT = 32768U;
internal const uint LVS_EX_DOUBLEBUFFER = 65536U;
internal const uint LVS_EX_HIDELABELS = 131072U;
internal const uint LVS_EX_SINGLEROW = 262144U;
internal const uint LVS_EX_SNAPTOGRID = 524288U;
internal const uint LVS_EX_SIMPLESELECT = 1048576U;
internal const uint LVS_EX_JUSTIFYCOLUMNS = 2097152U;
internal const uint LVS_EX_TRANSPARENTBKGND = 4194304U;
internal const uint LVS_EX_TRANSPARENTSHADOWTEXT = 8388608U;
internal const uint LVS_EX_AUTOAUTOARRANGE = 16777216U;
internal const uint LVS_EX_HEADERINALLVIEWS = 33554432U;
internal const uint LVS_EX_AUTOCHECKSELECT = 134217728U;
internal const uint LVS_EX_AUTOSIZECOLUMNS = 268435456U;
internal const uint LVS_EX_COLUMNSNAPPOINTS = 1073741824U;
internal const uint LVS_EX_COLUMNOVERFLOW = 2147483648U;
internal const int LVSCW_AUTOSIZE = -1;
internal const int LVSCW_AUTOSIZE_USEHEADER = -2;
/// <summary>Image list with large icons.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVSIL_NORMAL = 0U;
/// <summary>Image list with small icons.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVSIL_SMALL = 1U;
/// <summary>Image list with state images.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVSIL_STATE = 2U;
/// <summary>Image list for group header.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-listview_getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint LVSIL_GROUPHEADER = 3U;
internal const uint MA_ACTIVATE = 1U;
internal const uint MA_ACTIVATEANDEAT = 2U;
internal const uint MA_NOACTIVATE = 3U;
internal const uint MA_NOACTIVATEANDEAT = 4U;
internal const uint MAX_TAB_STOPS = 32U;
internal const uint MCM_FIRST = 4096U;
/// <summary>Retrieves the currently selected date. You can send this message explicitly or by using the MonthCal\_GetCurSel macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. This message will always fail when applied to month calendar controls set to the [**MCS\_MULTISELECT**](month-calendar-control-styles.md) style.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getcursel">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETCURSEL = 4097U;
/// <summary>Sets the currently selected date for a month calendar control. If the specified date is not in view, the control updates the display to bring it into view. You can send this message explicitly or by using the MonthCal\_SetCurSel macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. This message will fail if applied to a month calendar control that uses the [**MCS\_MULTISELECT**](month-calendar-control-styles.md) style.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-setcursel">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETCURSEL = 4098U;
/// <summary>Retrieves the maximum date range that can be selected in a month calendar control. You can send this message explicitly or by using the MonthCal\_GetMaxSelCount macro.</summary>
/// <returns>Returns an INT value that represents the total number of days that can be selected for the control.</returns>
/// <remarks>You can change the maximum date range that can be selected by using the [**MCM\_SETMAXSELCOUNT**](mcm-setmaxselcount.md) message.</remarks>
internal const uint MCM_GETMAXSELCOUNT = 4099U;
/// <summary>Sets the maximum number of days that can be selected in a month calendar control. You can send this message explicitly or by using the MonthCal\_SetMaxSelCount macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. This message will fail if applied to a month calendar control that does not use the [**MCS\_MULTISELECT**](month-calendar-control-styles.md) style.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-setmaxselcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETMAXSELCOUNT = 4100U;
/// <summary>Retrieves date information that represents the upper and lower limits of the date range currently selected by the user. You can send this message explicitly or by using the MonthCal\_GetSelRange macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. **MCM\_GETSELRANGE** will fail if applied to a month calendar control that does not use the [**MCS\_MULTISELECT**](month-calendar-control-styles.md) style.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getselrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETSELRANGE = 4101U;
/// <summary>Sets the selection for a month calendar control to a given date range. You can send this message explicitly or by using the MonthCal\_SetSelRange macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. This message will fail if applied to a month calendar control that does not use the [**MCS\_MULTISELECT**](month-calendar-control-styles.md) style.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-setselrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETSELRANGE = 4102U;
/// <summary>Retrieves date information (using SYSTEMTIME structures) that represents the high and low limits of a month calendar control's display. You can send this message explicitly or by using the MonthCal\_GetMonthRange macro.</summary>
/// <returns>Returns an INT value that represents the range, in months, spanned by the two limits returned at *lParam*.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getmonthrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETMONTHRANGE = 4103U;
/// <summary>Sets the day states for all months that are currently visible within a month calendar control. You can send this message explicitly or by using the MonthCal\_SetDayState macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para>An application can explicitly set day state information by sending this message, but the state will not persist when a different part of the calendar is scrolled into view. Day state information is usually set in response to the [MCN\_GETDAYSTATE](mcn-getdaystate.md) notification code, which is sent whenever the control needs to be refreshed. The array at *lParam* must contain as many elements as the value returned by the following macro: `MonthCal_GetMonthRange(hwndMC, GMR_DAYSTATE, NULL);` Keep in mind that the array at *lParam* must contain [**MONTHDAYSTATE**](monthdaystate.md) values that correspond with all months currently in the control's display, in chronological order. This includes the two months that may be partially displayed before the first month and after the last month.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-setdaystate#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETDAYSTATE = 4104U;
/// <summary>Retrieves the minimum size required to display a full month in a month calendar control. You can send this message explicitly or by using the MonthCal\_GetMinReqRect macro.</summary>
/// <returns>Returns nonzero and *lParam* receives the applicable bounding information if successful. Otherwise, the message returns zero.</returns>
/// <remarks>
/// <para>The minimum required window size for a month calendar control depends on the currently selected font, control styles, system metrics, and regional settings. When an application changes anything that affects the minimum window size, or processes a [**WM\_SETTINGCHANGE**](/windows/desktop/winmsg/wm-settingchange) message, it should send **MCM\_GETMINREQRECT** to determine the new minimum size. > [!Note] > The rectangle returned by **MCM\_GETMINREQRECT** does not include the width of the "Today" string, if it is present. If the [**MCS\_NOTODAY**](month-calendar-control-styles.md) style is not set, your application should also retrieve the rectangle that defines the "Today" string width by sending a [**MCM\_GETMAXTODAYWIDTH**](mcm-getmaxtodaywidth.md) message. Use the larger of the two rectangles to ensure that the "Today" string is not clipped.</para>
/// <para>The **top** and **left** members of the structure pointed to by *lParam* will always be zero. The **right** and **bottom** members represent the minimum *cx* and *cy* required for the control.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getminreqrect#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETMINREQRECT = 4105U;
/// <summary>Sets the color for a given portion of a month calendar control. You can send this message explicitly or by using the MonthCal\_SetColor macro.</summary>
/// <returns>Returns a [**COLORREF**](/windows/desktop/gdi/colorref) value that represents the previous color setting for the specified portion of the month calendar control if successful. Otherwise, the return is -1.</returns>
/// <remarks>If visual styles are active, this message has no effect except when *wParam* is MCSC\_BACKGROUND.</remarks>
internal const uint MCM_SETCOLOR = 4106U;
/// <summary>Retrieves the color for a given portion of a month calendar control. You can send this message explicitly or by using the MonthCal\_GetColor macro.</summary>
/// <returns>Returns a **COLORREF** value that represents the color setting for the specified portion of the month calendar control if successful. Otherwise, this message returns -1.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETCOLOR = 4107U;
/// <summary>Sets the \ 0034;today \ 0034; selection for a month calendar control. You can send this message explicitly or by using the MonthCal\_SetToday macro.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para>If the "today" selection is set to any date other than the default, the following conditions apply: - The control will not automatically update the "today" selection when the time passes midnight for the current day. - The control will not automatically update its display based on locale changes.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-settoday#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETTODAY = 4108U;
/// <summary>Retrieves the date information for the date specified as \ 0034;today \ 0034; for a month calendar control. You can send this message explicitly or by using the MonthCal\_GetToday macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-gettoday">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETTODAY = 4109U;
/// <summary>Determines which portion of a month calendar control is at a given point on the screen. You can send this message explicitly or by using the MonthCal\_HitTest macro.</summary>
/// <returns>
/// <para>Sets values in members of the</para>
/// <para>| Return code | Description | |-------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | <dl> <dt>**MCHT\_CALENDAR**</dt> </dl> | The given point was within the calendar.<br/> | | <dl> <dt>**MCHT\_CALENDARBK**</dt> </dl> | The given point was in the calendar's background.<br/> | | <dl> <dt>**MCHT\_CALENDARDATE**</dt> </dl> | The given point was on a particular date within the calendar. The [**SYSTEMTIME**](/windows/desktop/api/minwinbase/ns-minwinbase-systemtime) structure at *lParam->st* is set to the date at the given point.<br/> | | <dl> <dt>**MCHT\_CALENDARDATENEXT**</dt> </dl> | The given point was over a date from the next month (partially displayed at the end of the currently displayed month). If the user clicks here, the month calendar will scroll its display to the next month or set of months.<br/> | | <dl> <dt>**MCHT\_CALENDARDATEPREV**</dt> </dl> | The given point was over a date from the previous month (partially displayed at the end of the currently displayed month). If the user clicks here, the month calendar will scroll its display to the previous month or set of months.<br/> | | <dl> <dt>**MCHT\_CALENDARDAY**</dt> </dl> | The given point was over a day abbreviation ("Fri", for example). The [**SYSTEMTIME**](/windows/desktop/api/minwinbase/ns-minwinbase-systemtime) structure at *lParam->st* is set to the corresponding date in the top row.<br/> | | <dl> <dt>**MCHT\_CALENDARWEEKNUM**</dt> </dl> | The given point was over a week number ([**MCS\_WEEKNUMBERS**](month-calendar-control-styles.md) style only). The [**SYSTEMTIME**](/windows/desktop/api/minwinbase/ns-minwinbase-systemtime) structure at *lParam->st* is set to the corresponding date in the leftmost column.<br/> | | <dl> <dt>**MCHT\_NEXT**</dt> </dl> | The given point is in an area that will cause the month calendar to scroll its display to the next month or set of months. This flag is used to modify other hit test flags.<br/> | | <dl> <dt>**MCHT\_NOWHERE**</dt> </dl> | The given point was not on the month calendar control, or it was in an inactive portion of the control.<br/> | | <dl> <dt>**MCHT\_PREV**</dt> </dl> | The given point is in an area that will cause the month calendar to scroll its display to the previous month or set of months. This flag is used to modify other hit test flags.<br/> | | <dl> <dt>**MCHT\_TITLE**</dt> </dl> | The given point was over a month's title.<br/> | | <dl> <dt>**MCHT\_TITLEBK**</dt> </dl> | The given point was over the background of a month's title.<br/> | | <dl> <dt>**MCHT\_TITLEBTNNEXT**</dt> </dl> | The given point was over the button at the top right corner of the control. If the user clicks here, the month calendar will scroll its display to the next month or set of months. <br/> | | <dl> <dt>**MCHT\_TITLEBTNPREV**</dt> </dl> | The given point was over the button at the top left corner of the control. If the user clicks here, the month calendar will scroll its display to the previous month or set of months. <br/> | | <dl> <dt>**MCHT\_TITLEMONTH**</dt> </dl> | The given point was in a month's title bar, over a month name.<br/> | | <dl> <dt>**MCHT\_TITLEYEAR**</dt> </dl> | The given point was in a month's title bar, over the year value.<br/> | | <dl> <dt>**MCHT\_TODAYLINK**</dt> </dl> | The given point was on the "today" link at the bottom of the month calendar control.<br/> The **uHit** member of the [**MCHITTESTINFO**](/windows/desktop/api/Commctrl/ns-commctrl-mchittestinfo) structure at *lParam* will equal the return value. <br/> |</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-hittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_HITTEST = 4110U;
/// <summary>Sets the first day of the week for a month calendar control. You can send this message explicitly or by using the MonthCal\_SetFirstDayOfWeek macro.</summary>
/// <returns>Returns a **DWORD** value that contains two values. The high word is a **BOOL** value that is nonzero if the previous first day of the week did not equal LOCALE\_IFIRSTDAYOFWEEK, or zero otherwise. The low word is an INT value that represents the previous first day of the week.</returns>
/// <remarks>If the first day of the week is set to anything other than the default (LOCALE\_IFIRSTDAYOFWEEK), the control will not automatically update first-day-of-the-week changes based on locale changes.</remarks>
internal const uint MCM_SETFIRSTDAYOFWEEK = 4111U;
/// <summary>Retrieves the first day of the week for a month calendar control. You can send this message explicitly or by using the MonthCal\_GetFirstDayOfWeek macro.</summary>
/// <returns>Returns a **DWORD** value that contains two values. The high word is a **BOOL** value that is nonzero if the first day of the week is set to something other than LOCALE\_IFIRSTDAYOFWEEK, or zero otherwise. The low word is an INT value that represents the first day of the week, where 0 is Monday, 1 is Tuesday, and so on.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getfirstdayofweek">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETFIRSTDAYOFWEEK = 4112U;
/// <summary>Retrieves the minimum and maximum allowable dates set for a month calendar control. You can send this message explicitly or by using the MonthCal\_GetRange macro.</summary>
/// <returns>
/// <para>Returns a **DWORD** that can be zero (no limits are set) or a combination of the following values that specify limit information:</para>
/// <para>| Return code | Description | |------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------| | <dl> <dt>**GDTR\_MAX**</dt> </dl> | A maximum limit is set for the control; *lprgSysTimeArray*\[0\] is valid and contains the applicable date information. <br/> | | <dl> <dt>**GDTR\_MIN**</dt> </dl> | A minimum limit is set for the control; *lprgSysTimeArray*\[1\] is valid and contains the applicable date information. <br/> |</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETRANGE = 4113U;
/// <summary>Sets the minimum and maximum allowable dates for a month calendar control. You can send this message explicitly or by using the MonthCal\_SetRange macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-setrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETRANGE = 4114U;
/// <summary>Retrieves the scroll rate for a month calendar control. The scroll rate is the number of months that the control moves its display when the user clicks a scroll button. You can send this message explicitly or by using the MonthCal\_GetMonthDelta macro.</summary>
/// <returns>If the month delta was previously set using the [**MCM\_SETMONTHDELTA**](mcm-setmonthdelta.md) message, returns an INT value that represents the month calendar's current scroll rate. If the month delta was not previously set using the **MCM\_SETMONTHDELTA** message, or the month delta was reset to the default, returns an INT value that represents the current number of months visible.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getmonthdelta">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETMONTHDELTA = 4115U;
/// <summary>Sets the scroll rate for a month calendar control. The scroll rate is the number of months that the control moves its display when the user clicks a scroll button. You can send this message explicitly or by using the MonthCal\_SetMonthDelta macro.</summary>
/// <returns>Returns an INT value that represents the previous scroll rate. If the scroll rate was not previously set, the return value is zero.</returns>
/// <remarks>The PAGE UP and PAGE DOWN keys, VK\_PRIOR and VK\_NEXT, change the selected month by one, regardless of the number of months displayed or the value set by **MCM\_SETMONTHDELTA**.</remarks>
internal const uint MCM_SETMONTHDELTA = 4116U;
/// <summary>Retrieves the maximum width of the \ 0034;today \ 0034; string in a month calendar control. This includes the label text and the date text. You can send this message explicitly or by using the MonthCal\_GetMaxTodayWidth macro.</summary>
/// <returns>Returns the width of the "today" string, in pixels.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getmaxtodaywidth">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETMAXTODAYWIDTH = 4117U;
/// <summary>MCM_SETUNICODEFORMAT message - Sets the Unicode character format flag for the control.</summary>
/// <returns>Returns the previous Unicode format flag for the control.</returns>
/// <remarks>See the remarks for [**CCM\_SETUNICODEFORMAT**](ccm-setunicodeformat.md) for a discussion of this message.</remarks>
internal const uint MCM_SETUNICODEFORMAT = 8197U;
/// <summary>Retrieves the Unicode character format flag for the control. You can send this message explicitly or use the MonthCal\_GetUnicodeFormat macro.</summary>
/// <returns>Returns the Unicode format flag for the control. If this value is nonzero, the control is using Unicode characters. If this value is zero, the control is using ANSI characters.</returns>
/// <remarks>See the remarks for [**CCM\_GETUNICODEFORMAT**](ccm-getunicodeformat.md) for a discussion of this message.</remarks>
internal const uint MCM_GETUNICODEFORMAT = 8198U;
/// <summary>Gets the current view of the calendar. You can send this message explicitly or by using the MonthCal\_GetCurrentView macro.</summary>
/// <returns>
/// <para>Current view. One of the following values.</para>
/// <para>| Return code | Description | |----------------------------------------------------------------------------------------------|--------------------------| | <dl> <dt>**MCMV\_MONTH**</dt> </dl> | Monthly view.<br/> | | <dl> <dt>**MCMV\_YEAR**</dt> </dl> | Annual view.<br/> | | <dl> <dt>**MCMV\_DECADE**</dt> </dl> | Decade view.<br/> | | <dl> <dt>**MCMV\_CENTURY**</dt> </dl> | Century view.<br/> |</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getcurrentview">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETCURRENTVIEW = 4118U;
/// <summary>Gets the number of calendars currently displayed in the calendar control. You can send this message explicitly or by using the MonthCal\_GetCalendarCount macro.</summary>
/// <returns>Number of calendars currently displayed in the calendar control. The maximum number of allowed calendars is 12.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getcalendarcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETCALENDARCOUNT = 4119U;
/// <summary>Gets information about a calendar grid.</summary>
/// <returns>**TRUE** if successful, otherwise **FALSE**.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getcalendargridinfo">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETCALENDARGRIDINFO = 4120U;
/// <summary>Gets the calendar ID for the given calendar control. You can send this message explicitly or by using the MonthCal\_GetCALID macro.</summary>
/// <returns>ID of the current calendar. One of the [Calendar Identifiers](/windows/desktop/Intl/calendar-identifiers) constants.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getcalid">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETCALID = 4123U;
/// <summary>Sets the calendar ID for the given calendar control. You can send this message explicitly or by using the MonthCal\_SetCALID macro.</summary>
/// <returns>Unused.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-setcalid">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETCALID = 4124U;
/// <summary>Calculates how many calendars will fit in the given rectangle, and then returns the minimum size that a rectangle needs to be to fit that number of calendars. You can send this message explicitly or by using the MonthCal\_SizeRectToMin macro.</summary>
/// <returns>Unused.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-sizerecttomin">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SIZERECTTOMIN = 4125U;
/// <summary>Sets the size of the border, in pixels. You can send this message explicitly or by using the MonthCal\_SetCalendarBorder macro.</summary>
/// <returns>Not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-setcalendarborder">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETCALENDARBORDER = 4126U;
/// <summary>Gets the size of the border, in pixels. You can send this message explicitly or by using the MonthCal\_GetCurrentView macro.</summary>
/// <returns>Border size, in pixels.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-getcalendarborder">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_GETCALENDARBORDER = 4127U;
/// <summary>Sets the current view of the calendar. You can send this message explicitly or by using the MonthCal\_SetCurrentView macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcm-setcurrentview">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCM_SETCURRENTVIEW = 4128U;
internal const uint MCN_FIRST = 4294966550U;
internal const uint MCN_LAST = 4294966544U;
/// <summary>Sent by a month calendar control when the currently selected date or range of dates changes. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>For example, the control sends MCN\_SELCHANGE when the user explicitly changes the selection within the current month or when the selection is implicitly changed in response to next/previous month navigation. This notification code is also sent by the system at regular intervals so that the control can respond to date changes. This notification code is similar to [MCN\_SELECT](mcn-select.md), but it is sent in response to any selection change. MCN\_SELECT is sent only for an explicit date selection.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcn-selchange#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCN_SELCHANGE = 4294966547U;
/// <summary>Sent by a month calendar control to request information about how individual days should be displayed. This notification code is sent only by month calendar controls that use the MCS\_DAYSTATE style, and it is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>Handling this notification code allows your application to customize its display by specifying that certain days be displayed in bold.</remarks>
internal const uint MCN_GETDAYSTATE = 4294966549U;
/// <summary>Sent by a month calendar control when the user makes an explicit date selection within a month calendar control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>The **MCN\_SELECT** notification code is similar to [**MCN\_SELCHANGE**](mcn-selchange.md), but **MCN\_SELECT** is sent only in response to a user's explicit date selections. **MCN\_SELCHANGE** applies to any selection change.</remarks>
internal const uint MCN_SELECT = 4294966550U;
/// <summary>Sent by a month calendar control when the current view changes. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/mcn-viewchange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint MCN_VIEWCHANGE = 4294966546U;
internal const uint MCS_DAYSTATE = 1U;
internal const uint MCS_MULTISELECT = 2U;
internal const uint MCS_WEEKNUMBERS = 4U;
internal const uint MCS_NOTODAYCIRCLE = 8U;
internal const uint MCS_NOTODAY = 16U;
internal const uint MCS_NOTRAILINGDATES = 64U;
internal const uint MCS_SHORTDAYSOFWEEK = 128U;
internal const uint MCS_NOSELCHANGEONNAV = 256U;
internal const uint MCSC_BACKGROUND = 0U;
internal const uint MCSC_TEXT = 1U;
internal const uint MCSC_TITLEBK = 2U;
internal const uint MCSC_TITLETEXT = 3U;
internal const uint MCSC_MONTHBK = 4U;
internal const uint MCSC_TRAILINGTEXT = 5U;
internal const int MEMBERID_NIL = -1;
internal const string MONTHCAL_CLASS = "SysMonthCal32";
internal const string MSFTEDIT_CLASS = "RICHEDIT50W";
internal const uint NFR_ANSI = 1U;
internal const uint NFR_UNICODE = 2U;
internal const uint NIN_SELECT = 1024U;
internal const uint NIN_BALLOONSHOW = 1026U;
internal const uint NIN_BALLOONHIDE = 1027U;
internal const uint NIN_BALLOONTIMEOUT = 1028U;
internal const uint NIN_BALLOONUSERCLICK = 1029U;
internal const uint NIN_POPUPOPEN = 1030U;
internal const uint NIN_POPUPCLOSE = 1031U;
internal const uint NM_FIRST = 0U;
/// <summary>Notifies a control's parent window that the control could not complete an operation because there was not enough memory available. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored by the control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-outofmemory">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_OUTOFMEMORY = 4294967295U;
/// <summary>Sent by a list-view control when the user clicks an item with the left mouse button. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>The **iItem** member of *lParam* is only valid if the icon or first-column label has been clicked. To determine which item is selected when a click takes place elsewhere in a row, send an [**LVM\_SUBITEMHITTEST**](lvm-subitemhittest.md) message.</remarks>
internal const uint NM_CLICK = 4294967294U;
/// <summary>Notifies a parent window of a tab control that the user has double-clicked the left mouse button within the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return nonzero to not allow the default processing, or zero to allow the default processing.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-dblclk-tab">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_DBLCLK = 4294967293U;
/// <summary>Notifies a list-view control's parent window that the control has the input focus and that the user has pressed the ENTER key. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-return-list-view-">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_RETURN = 4294967292U;
/// <summary>Sent by a list-view control when the user clicks an item with the right mouse button. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return nonzero to not allow the default processing, or zero to allow the default processing.</returns>
/// <remarks>The **iItem** member of *lParam* is only valid if the icon or first-column label has been clicked. To determine which item is selected when a click takes place elsewhere in a row, send an [**LVM\_SUBITEMHITTEST**](lvm-subitemhittest.md) message.</remarks>
internal const uint NM_RCLICK = 4294967291U;
/// <summary>Notifies a control's parent window that the user has double-clicked the right mouse button within the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to allow the toolbar control to perform default processing of the event, or **TRUE** to prevent the control from processing the event.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-rdblclk-toolbar">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_RDBLCLK = 4294967290U;
/// <summary>Notifies a list-view control's parent window that the control has received the input focus. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-setfocus-list-view-">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_SETFOCUS = 4294967289U;
/// <summary>Notifies a list-view control's parent window that the control has lost the input focus. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-killfocus-list-view">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_KILLFOCUS = 4294967288U;
/// <summary>Sent by a toolbar to notify its parent window about drawing operations. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>The value your application can return depends on the current drawing stage. The **dwDrawStage** member of the associated [**NMCUSTOMDRAW**](/windows/win32/api/commctrl/ns-commctrl-nmcustomdraw) structure holds a value that specifies the drawing stage. You must return one of the following values.</para>
/// <para>| Return code | Description | |--------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | <dl> <dt>**CDRF\_DODEFAULT**</dt> </dl> | The control will draw itself. It will not send any additional [NM\_CUSTOMDRAW](nm-customdraw.md) notification codes for this paint cycle. This occurs when **dwDrawStage** equals CDDS\_PREPAINT.<br/> | | <dl> <dt>**CDRF\_NOTIFYITEMDRAW**</dt> </dl> | The control will notify the parent of any item-related drawing operations. It will send [NM\_CUSTOMDRAW](nm-customdraw.md) notification codes before and after drawing items. This occurs when **dwDrawStage** equals CDDS\_PREPAINT.<br/> | | <dl> <dt>**CDRF\_NOTIFYPOSTERASE**</dt> </dl> | The control will notify the parent after erasing an item. This occurs when **dwDrawStage** equals CDDS\_PREPAINT.<br/> | | <dl> <dt>**CDRF\_NOTIFYPOSTPAINT**</dt> </dl> | The control will notify the parent after painting an item. This occurs when **dwDrawStage** equals CDDS\_PREPAINT.<br/> | | <dl> <dt>**CDRF\_NOTIFYSUBITEMDRAW**</dt> </dl> | [Version 4.71](common-control-versions.md). The control will notify the parent when a list-view subitem is being drawn. This occurs when **dwDrawStage** equals CDDS\_PREPAINT.<br/> | | <dl> <dt>**CDRF\_NEWFONT**</dt> </dl> | Your application specified a new font for the item; the control will use the new font. For more information on changing fonts, see [Changing fonts and colors](custom-draw.md). This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**CDRF\_SKIPDEFAULT**</dt> </dl> | Your application drew the item manually. The control will not draw the item. This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**TBCDRF\_BLENDICON**</dt> </dl> | [Version 5.00](common-control-versions.md). Blend the button 50 percent with the background. This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**TBCDRF\_NOBACKGROUND**</dt> </dl> | [Version 5.00](common-control-versions.md). Do not draw button background. This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**TBCDRF\_NOEDGES**</dt> </dl> | [Version 4.71](common-control-versions.md). Do not draw button edges. This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**TBCDRF\_HILITEHOTTRACK**</dt> </dl> | [Version 4.71](common-control-versions.md). Use the **clrHighlightHotTrack** member of the [**NMTBCUSTOMDRAW**](/windows/desktop/api/Commctrl/ns-commctrl-nmtbcustomdraw) structure to draw the background of hot-tracked items. This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**TBCDRF\_NOOFFSET**</dt> </dl> | [Version 4.71](common-control-versions.md). Do not offset the button when pressed. This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**TBCDRF\_NOMARK**</dt> </dl> | Do not draw default highlight of items that have the [**TBSTATE\_MARKED**](toolbar-button-states.md). This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**TBCDRF\_NOETCHEDEFFECT**</dt> </dl> | [Version 4.71](common-control-versions.md). Do not draw etched effect for disabled items. This occurs when **dwDrawStage** equals CDDS\_ITEMPREPAINT.<br/> | | <dl> <dt>**TBCDRF\_USECDCOLORS**</dt> </dl> | [Version 6.00](common-control-versions.md), **Windows Vista** only. Use custom draw colors to render text regardless of visual style.<br/> |</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-customdraw-toolbar">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_CUSTOMDRAW = 4294967284U;
/// <summary>Sent by a list-view control when the mouse hovers over an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return zero to allow the list view to process the hover normally, or nonzero to prevent the hover from being processed.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-hover-list-view">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_HOVER = 4294967283U;
/// <summary>NM_NCHITTEST notification code - Sent by a rebar control when the control receives a WM\_NCHITTEST message. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Unless otherwise specified, return zero to allow the control to perform default processing of the hit test message, or return one of the HT\* values documented under [**WM\_NCHITTEST**](/windows/desktop/inputdev/wm-nchittest) to override the default hit test processing.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-nchittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_NCHITTEST = 4294967282U;
/// <summary>NM_KEYDOWN (toolbar) notification code - Sent by a control when the control has the keyboard focus and the user presses a key. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return nonzero to prevent the control from processing the key, or zero otherwise.</returns>
/// <remarks>Currently, only the toolbar control sends this notification code.</remarks>
internal const uint NM_KEYDOWN = 4294967281U;
/// <summary>Notifies a tab control's parent window that the control is releasing mouse capture. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-releasedcapture-tab-">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_RELEASEDCAPTURE = 4294967280U;
/// <summary>Notifies a control's parent window that the control is setting the cursor in response to a WM\_SETCURSOR message. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return zero to enable the control to set the cursor or nonzero to prevent the control from setting the cursor.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-setcursor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_SETCURSOR = 4294967279U;
/// <summary>The NM\_CHAR notification code is sent by a control when a character key is processed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored by most controls. For more information, see the documentation for the individual controls.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-char">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_CHAR = 4294967278U;
/// <summary>Notifies a control's parent window that the control has created a tooltip control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Unless otherwise specified, the control ignores the return value from this notification code.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-tooltipscreated">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_TOOLTIPSCREATED = 4294967277U;
/// <summary>Notifies a control's parent window that the left mouse button has been pressed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored by the control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-ldown">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_LDOWN = 4294967276U;
/// <summary>NM_RDOWN notification code - Not currently supported.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-rdown">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_RDOWN = 4294967275U;
/// <summary>Notifies a control's parent window that the theme has changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored by the control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-themechanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_THEMECHANGED = 4294967274U;
/// <summary>Sent by a list-view control when the control has changed a font. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored by the control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-fontchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_FONTCHANGED = 4294967273U;
/// <summary>Notifies a control's parent window about custom text operations. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored by the control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-customtext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_CUSTOMTEXT = 4294967272U;
/// <summary>Sent by a tree-view control to its parent window that the state image is changing. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored by the control.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/nm-tvstateimagechanging">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint NM_TVSTATEIMAGECHANGING = 4294967272U;
internal const uint NM_LAST = 4294967197U;
/// <summary>Sent by a button control to its parent to get measurements for the two rectangles of the split button. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Return [**CDRF\_SKIPDEFAULT**](cdrf-constants.md) to tell the button control to use the values returned in the [**NMCUSTOMSPLITRECTINFO**](/windows/win32/api/commctrl/ns-commctrl-nmcustomsplitrectinfo) structure; otherwise, return [**CDRF\_DODEFAULT**](cdrf-constants.md).</returns>
/// <remarks>This notification code is sent by a button control before it is drawn. The button must be of style [**BS\_SPLITBUTTON**](button-styles.md) or [**BS\_DEFSPLITBUTTON**](button-styles.md). If the rectangles returned to the control in *lParam* are not valid, they are ignored.</remarks>
internal const uint NM_GETCUSTOMSPLITRECT = 4294966049U;
/// <summary>Sets the minimum and maximum values for a progress bar and redraws the bar to reflect the new range.</summary>
/// <returns>Returns the previous range values if successful, or zero otherwise. The [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) specifies the previous minimum value, and the [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)) specifies the previous maximum value.</returns>
/// <remarks>
/// <para>If you do not set the range values, the system sets the minimum value to 0 and the maximum value to 100. Because this message expresses the range as a 16-bit unsigned integer, it can extend from 0 to 65,535. The minimum value in the range can be from 0 to 65,535. Likewise, the maximum value can be from 0 to 65,535. To set a larger range, call [**PBM\_SETRANGE32**](pbm-setrange32.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-setrange#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_SETRANGE = 1025U;
/// <summary>Sets the current position for a progress bar and redraws the bar to reflect the new position.</summary>
/// <returns>Returns the previous position.</returns>
/// <remarks>
/// <para>If *wParam* is outside the range of the control, the position is set to the closest boundary. Do not send this message to a control that has the [**PBS\_MARQUEE**](progress-bar-control-styles.md) style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-setpos#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_SETPOS = 1026U;
/// <summary>Advances the current position of a progress bar by a specified increment and redraws the bar to reflect the new position.</summary>
/// <returns>Returns the previous position.</returns>
/// <remarks>
/// <para>If the increment results in a value outside the range of the control, the position is set to the nearest boundary. The behavior of this message is undefined if it is sent to a control that has the [**PBS\_MARQUEE**](progress-bar-control-styles.md) style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-deltapos#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_DELTAPOS = 1027U;
/// <summary>Specifies the step increment for a progress bar. The step increment is the amount by which the progress bar increases its current position whenever it receives a PBM\_STEPIT message. By default, the step increment is set to 10.</summary>
/// <returns>Returns the previous step increment.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-setstep">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_SETSTEP = 1028U;
/// <summary>Advances the current position for a progress bar by the step increment and redraws the bar to reflect the new position. An application sets the step increment by sending the PBM\_SETSTEP message.</summary>
/// <returns>Returns the previous position.</returns>
/// <remarks>When the position exceeds the maximum range value, this message resets the current position so that the progress indicator starts over again from the beginning.</remarks>
internal const uint PBM_STEPIT = 1029U;
/// <summary>Sets the minimum and maximum values for a progress bar to 32-bit values, and redraws the bar to reflect the new range.</summary>
/// <returns>Returns a **DWORD** value that holds the previous 16-bit low limit in its [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) and the previous 16-bit high limit in its [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)). If the previous ranges were 32-bit values, the return value consists of the **LOWORD**s of both 32-bit limits.</returns>
/// <remarks>To retrieve the entire high and low 32-bit values, use the [**PBM\_GETRANGE**](pbm-getrange.md) message.</remarks>
internal const uint PBM_SETRANGE32 = 1030U;
/// <summary>Retrieves information about the current high and low limits of a given progress bar control.</summary>
/// <returns>Returns an INT that represents the limit value specified by *wParam*. If *lParam* is not **NULL**, *lParam* must point to a [**PBRANGE**](/windows/desktop/api/Commctrl/ns-commctrl-pbrange) structure that is to be filled with both limit values.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-getrange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_GETRANGE = 1031U;
/// <summary>Retrieves the current position of the progress bar.</summary>
/// <returns>Returns a **UINT** value that represents the current position of the progress bar.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-getpos">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_GETPOS = 1032U;
/// <summary>Sets the color of the progress indicator bar in the progress bar control.</summary>
/// <returns>Returns the previous progress indicator bar color, or CLR\_DEFAULT if the progress indicator bar color is the default color.</returns>
/// <remarks>When visual styles are enabled, this message has no effect.</remarks>
internal const uint PBM_SETBARCOLOR = 1033U;
/// <summary>Sets the background color in the progress bar.</summary>
/// <returns>Returns the previous background color, or CLR\_DEFAULT if the background color is the default color.</returns>
/// <remarks>When visual styles are enabled, this message has no effect.</remarks>
internal const uint PBM_SETBKCOLOR = 8193U;
/// <summary>Sets the progress bar to marquee mode. This causes the progress bar to move like a marquee.</summary>
/// <returns>Always returns **TRUE**.</returns>
/// <remarks>
/// <para>Use this message when you do not know the amount of progress toward completion but wish to indicate that progress is being made. Send the **PBM\_SETMARQUEE** message to start or stop the animation. > [!Note] > You must set the control style to [**PBS\_MARQUEE**](progress-bar-control-styles.md) before attempting to start the animation.</para>
/// <para>> [!Note] > This message requires ComCtl32.dll version 6.00 or later.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-setmarquee#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_SETMARQUEE = 1034U;
/// <summary>Retrieves the step increment from a progress bar. The step increment is the amount by which the progress bar increases its current position whenever it receives a PBM\_STEPIT message. By default, the step increment is set to 10.</summary>
/// <returns>Returns the current step increment.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-getstep">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_GETSTEP = 1037U;
/// <summary>Gets the background color of the progress bar.</summary>
/// <returns>Returns the background color of the progress bar.</returns>
/// <remarks>
/// <para>This is the color set by the [**PBM\_SETBKCOLOR**](pbm-setbkcolor.md) message. The default value is CLR\_DEFAULT, which is defined in commctrl.h. This function only affects the classic mode, not any visual style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-getbkcolor#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_GETBKCOLOR = 1038U;
/// <summary>Gets the color of the progress bar.</summary>
/// <returns>Returns the color of the progress bar.</returns>
/// <remarks>
/// <para>This is the color set by the [**PBM\_SETBARCOLOR**](pbm-setbarcolor.md) message. The default value is CLR\_DEFAULT, which is defined in commctrl.h. This function only affects the classic mode, not any visual style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-getbarcolor#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_GETBARCOLOR = 1039U;
/// <summary>Sets the state of the progress bar.</summary>
/// <returns>Returns the previous state.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-setstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_SETSTATE = 1040U;
/// <summary>Gets the state of the progress bar.</summary>
/// <returns>
/// <para>Returns the current state of the progress bar. One of the following values.</para>
/// <para>| Return code | Description | |---------------------------------------------------------------------------------------------|-------------------------| | <dl> <dt>**PBST\_NORMAL**</dt> </dl> | In progress.<br/> | | <dl> <dt>**PBST\_ERROR**</dt> </dl> | Error.<br/> | | <dl> <dt>**PBST\_PAUSED**</dt> </dl> | Paused.<br/> |</para>
/// </returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/pbm-getstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint PBM_GETSTATE = 1041U;
internal const uint PBS_SMOOTH = 1U;
internal const uint PBS_VERTICAL = 4U;
internal const uint PBS_MARQUEE = 8U;
internal const uint PBS_SMOOTHREVERSE = 16U;
internal const uint PBST_NORMAL = 1U;
internal const uint PBST_ERROR = 2U;
internal const uint PBST_PAUSED = 3U;
internal const uint PD_RESULT_CANCEL = 0U;
internal const uint PD_RESULT_PRINT = 1U;
internal const uint PD_RESULT_APPLY = 2U;
internal const int PRF_CHECKVISIBLE = 1;
internal const int PRF_NONCLIENT = 2;
internal const int PRF_CLIENT = 4;
internal const int PRF_ERASEBKGND = 8;
internal const int PRF_CHILDREN = 16;
internal const int PRF_OWNED = 32;
internal const string PROGRESS_CLASS = "msctls_progress32";
internal static readonly winmdroot.Foundation.HRESULT REGDB_E_CLASSNOTREG = (winmdroot.Foundation.HRESULT)(-2147221164);
internal const uint SC_MANAGER_ALL_ACCESS = 983103U;
internal const uint SC_MANAGER_CONNECT = 1U;
internal const uint SC_MANAGER_CREATE_SERVICE = 2U;
internal const uint SC_MANAGER_ENUMERATE_SERVICE = 4U;
internal const uint SC_MANAGER_LOCK = 8U;
internal const uint SC_MANAGER_QUERY_LOCK_STATUS = 16U;
internal const uint SC_MANAGER_MODIFY_BOOT_CONFIG = 32U;
internal const string SC_AGGREGATE_STORAGE_KEY = "System\\CurrentControlSet\\Control\\ServiceAggregatedEvents";
internal const uint SC_SIZE = 61440U;
internal const uint SC_MOVE = 61456U;
internal const uint SC_MINIMIZE = 61472U;
internal const uint SC_MAXIMIZE = 61488U;
internal const uint SC_NEXTWINDOW = 61504U;
internal const uint SC_PREVWINDOW = 61520U;
internal const uint SC_CLOSE = 61536U;
internal const uint SC_VSCROLL = 61552U;
internal const uint SC_HSCROLL = 61568U;
internal const uint SC_MOUSEMENU = 61584U;
internal const uint SC_KEYMENU = 61696U;
internal const uint SC_ARRANGE = 61712U;
internal const uint SC_RESTORE = 61728U;
internal const uint SC_TASKLIST = 61744U;
internal const uint SC_HOTKEY = 61776U;
internal const uint SC_DEFAULT = 61792U;
internal const uint SC_MONITORPOWER = 61808U;
internal const uint SC_CONTEXTHELP = 61824U;
internal const uint SC_SEPARATOR = 61455U;
internal const uint SC_ICON = 61472U;
internal const uint SC_ZOOM = 61488U;
internal const uint SC_SCREENSAVE = 61760U;
internal const uint SC_DLG_MINIMAL_UI = 1U;
internal const uint SC_DLG_NO_UI = 2U;
internal const uint SC_DLG_FORCE_UI = 4U;
internal const uint SCF_SELECTION = 1U;
internal const uint SCF_WORD = 2U;
internal const uint SCF_DEFAULT = 0U;
internal const uint SCF_ALL = 4U;
internal const uint SCF_USEUIRULES = 8U;
internal const uint SCF_ASSOCIATEFONT = 16U;
internal const uint SCF_NOKBUPDATE = 32U;
internal const uint SCF_ASSOCIATEFONT2 = 64U;
internal const uint SCF_SMARTFONT = 128U;
internal const uint SCF_CHARREPFROMLCID = 256U;
internal const uint SCF_ISSECURE = 1U;
internal const uint SF_MAX_USERNAME = 257U;
internal const uint SF_MAX_PASSWORD = 257U;
internal const uint SF_MAX_AUTH_TYPE = 33U;
internal const uint SF_MAX_FILTER_DESC_LEN = 257U;
internal const uint SF_DENIED_LOGON = 1U;
internal const uint SF_DENIED_RESOURCE = 2U;
internal const uint SF_DENIED_FILTER = 4U;
internal const uint SF_DENIED_APPLICATION = 8U;
internal const uint SF_DENIED_BY_CONFIG = 65536U;
internal const uint SF_NOTIFY_SECURE_PORT = 1U;
internal const uint SF_NOTIFY_NONSECURE_PORT = 2U;
internal const uint SF_NOTIFY_READ_RAW_DATA = 32768U;
internal const uint SF_NOTIFY_PREPROC_HEADERS = 16384U;
internal const uint SF_NOTIFY_AUTHENTICATION = 8192U;
internal const uint SF_NOTIFY_URL_MAP = 4096U;
internal const uint SF_NOTIFY_ACCESS_DENIED = 2048U;
internal const uint SF_NOTIFY_SEND_RESPONSE = 64U;
internal const uint SF_NOTIFY_SEND_RAW_DATA = 1024U;
internal const uint SF_NOTIFY_LOG = 512U;
internal const uint SF_NOTIFY_END_OF_REQUEST = 128U;
internal const uint SF_NOTIFY_END_OF_NET_SESSION = 256U;
internal const uint SF_NOTIFY_AUTH_COMPLETE = 67108864U;
internal const uint SF_NOTIFY_ORDER_HIGH = 524288U;
internal const uint SF_NOTIFY_ORDER_MEDIUM = 262144U;
internal const uint SF_NOTIFY_ORDER_LOW = 131072U;
internal const uint SF_NOTIFY_ORDER_DEFAULT = 131072U;
internal const uint SF_TEXT = 1U;
internal const uint SF_RTF = 2U;
internal const uint SF_RTFNOOBJS = 3U;
internal const uint SF_TEXTIZED = 4U;
internal const uint SF_UNICODE = 16U;
internal const uint SF_USECODEPAGE = 32U;
internal const uint SF_NCRFORNONASCII = 64U;
internal const uint SF_RTFVAL = 1792U;
internal const uint SFF_WRITEXTRAPAR = 128U;
internal const uint SFF_SELECTION = 32768U;
internal const uint SFF_PLAINRTF = 16384U;
internal const uint SFF_PERSISTVIEWSCALE = 8192U;
internal const uint SFF_KEEPDOCINFO = 4096U;
internal const uint SFF_PWD = 2048U;
internal const uint SIZE_OF_80387_REGISTERS = 80U;
internal const uint SIZE_RESTORED = 0U;
internal const uint SIZE_MINIMIZED = 1U;
internal const uint SIZE_MAXIMIZED = 2U;
internal const uint SIZE_MAXSHOW = 3U;
internal const uint SIZE_MAXHIDE = 4U;
internal const uint SIZE_DVINFO = 32U;
internal const uint START_PAGE_GENERAL = 4294967295U;
internal const string STATUSCLASSNAME = "msctls_statusbar32";
internal const uint stc4 = 1091U;
/// <summary>Enables or disables the specified button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>When a button has been enabled, it can be pressed and checked.</remarks>
internal const uint TB_ENABLEBUTTON = 1025U;
/// <summary>Checks or unchecks a given button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>When a button is checked, it is displayed in the pressed state.</remarks>
internal const uint TB_CHECKBUTTON = 1026U;
/// <summary>Presses or releases the specified button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-pressbutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_PRESSBUTTON = 1027U;
/// <summary>Hides or shows the specified button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-hidebutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_HIDEBUTTON = 1028U;
/// <summary>Sets or clears the indeterminate state of the specified button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-indeterminate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_INDETERMINATE = 1029U;
/// <summary>Sets the highlight state of a given button in a toolbar control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-markbutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_MARKBUTTON = 1030U;
/// <summary>Determines whether the specified button in a toolbar is enabled.</summary>
/// <returns>Returns nonzero if the button is enabled, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-isbuttonenabled">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ISBUTTONENABLED = 1033U;
/// <summary>Determines whether the specified button in a toolbar is checked.</summary>
/// <returns>Returns nonzero if the button is checked, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-isbuttonchecked">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ISBUTTONCHECKED = 1034U;
/// <summary>Determines whether the specified button in a toolbar is pressed.</summary>
/// <returns>Returns nonzero if the button is pressed, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-isbuttonpressed">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ISBUTTONPRESSED = 1035U;
/// <summary>Determines whether the specified button in a toolbar is hidden.</summary>
/// <returns>Returns nonzero if the button is hidden, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-isbuttonhidden">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ISBUTTONHIDDEN = 1036U;
/// <summary>Determines whether the specified button in a toolbar is indeterminate.</summary>
/// <returns>Returns nonzero if the button is indeterminate, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-isbuttonindeterminate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ISBUTTONINDETERMINATE = 1037U;
/// <summary>Checks the highlight state of a toolbar button.</summary>
/// <returns>Returns nonzero if the button is highlighted, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-isbuttonhighlighted">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ISBUTTONHIGHLIGHTED = 1038U;
/// <summary>Sets the state for the specified button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETSTATE = 1041U;
/// <summary>Retrieves information about the state of the specified button in a toolbar, such as whether it is enabled, pressed, or checked.</summary>
/// <returns>Returns the button state information if successful, or -1 otherwise. The button state information can be a combination of the values listed in [**Toolbar Button States**](toolbar-button-states.md).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETSTATE = 1042U;
/// <summary>Adds one or more images to the list of button images available for a toolbar.</summary>
/// <returns>Returns the index of the first new image if successful, or -1 otherwise.</returns>
/// <remarks>If the toolbar was created using the [**CreateWindowEx**](/windows/desktop/api/winuser/nf-winuser-createwindowexa) function, you must send the [**TB\_BUTTONSTRUCTSIZE**](tb-buttonstructsize.md) message to the toolbar before sending **TB\_ADDBITMAP**.</remarks>
internal const uint TB_ADDBITMAP = 1043U;
/// <summary>Adds one or more buttons to a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>If the toolbar was created using the [**CreateWindowEx**](/windows/desktop/api/winuser/nf-winuser-createwindowexa) function, you must send the [**TB\_BUTTONSTRUCTSIZE**](tb-buttonstructsize.md) message to the toolbar before sending **TB\_ADDBUTTONS**. See [**TB\_SETIMAGELIST**](tb-setimagelist.md) for a discussion of how to assign bitmaps to toolbar buttons from one or more image lists.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-addbuttons#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ADDBUTTONSA = 1044U;
/// <summary>Inserts a button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-insertbutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_INSERTBUTTONA = 1045U;
/// <summary>Deletes a button from the toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-deletebutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_DELETEBUTTON = 1046U;
/// <summary>Retrieves information about the specified button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getbutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETBUTTON = 1047U;
/// <summary>Retrieves a count of the buttons currently in the toolbar.</summary>
/// <returns>Returns the count of the buttons.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-buttoncount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_BUTTONCOUNT = 1048U;
/// <summary>Retrieves the zero-based index for the button associated with the specified command identifier.</summary>
/// <returns>Returns the zero-based index for the button or -1 if the specified command identifier is invalid.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-commandtoindex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_COMMANDTOINDEX = 1049U;
/// <summary>Send this message to initiate saving or restoring a toolbar state.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>For version 4.72 and earlier, to use this message to save or restore a toolbar, the parent window of the toolbar control must implement a handler for the [TBN\_GETBUTTONINFO](tbn-getbuttoninfo.md) notification code. The toolbar issues this notification to retrieve information about each button as it is restored. Version 5.80 includes a new save/restore option. At the beginning of the process, and as each button is saved or restored, your application will receive a [TBN\_SAVE](tbn-save.md) or [TBN\_RESTORE](tbn-restore.md) notification. To use this option, you must implement notification handlers to provide the Shell with the bitmap and state information it needs to successfully save or restore the toolbar state.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-saverestore#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SAVERESTOREA = 1050U;
/// <summary>Send this message to initiate saving or restoring a toolbar state.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>For version 4.72 and earlier, to use this message to save or restore a toolbar, the parent window of the toolbar control must implement a handler for the [TBN\_GETBUTTONINFO](tbn-getbuttoninfo.md) notification code. The toolbar issues this notification to retrieve information about each button as it is restored. Version 5.80 includes a new save/restore option. At the beginning of the process, and as each button is saved or restored, your application will receive a [TBN\_SAVE](tbn-save.md) or [TBN\_RESTORE](tbn-restore.md) notification. To use this option, you must implement notification handlers to provide the Shell with the bitmap and state information it needs to successfully save or restore the toolbar state.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-saverestore#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SAVERESTOREW = 1100U;
/// <summary>Displays the Customize Toolbar dialog box.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>> [!Note] > The toolbar must handle the [TBN\_QUERYINSERT](tbn-queryinsert.md) and [TBN\_QUERYDELETE](tbn-querydelete.md) notifications for the **Customize Toolbar** dialog box to appear. If the toolbar does not handle those notifications, **TB\_CUSTOMIZE** has no effect.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-customize#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_CUSTOMIZE = 1051U;
/// <summary>Adds a new string to the toolbar's string pool.</summary>
/// <returns>Returns the index of the first new string if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>If *wParam* is **NULL**, *lParam* points to a character array with one or more null-terminated strings. The last string in the array must be terminated with two null characters. If *wParam* is the HINSTANCE of the application or of another module containing a string resource, *lParam* is the resource identifier of the string. Each item in the string must begin with an arbitrary separator character, and the string must end with two such characters. For example, the text for three buttons might appear in the string table as "/New/Open/Save//". The message returns the index of "New" in the toolbar's string pool, and the other items are in consecutive positions.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-addstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ADDSTRINGA = 1052U;
/// <summary>Adds a new string to the toolbar's string pool.</summary>
/// <returns>Returns the index of the first new string if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>If *wParam* is **NULL**, *lParam* points to a character array with one or more null-terminated strings. The last string in the array must be terminated with two null characters. If *wParam* is the HINSTANCE of the application or of another module containing a string resource, *lParam* is the resource identifier of the string. Each item in the string must begin with an arbitrary separator character, and the string must end with two such characters. For example, the text for three buttons might appear in the string table as "/New/Open/Save//". The message returns the index of "New" in the toolbar's string pool, and the other items are in consecutive positions.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-addstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ADDSTRINGW = 1101U;
/// <summary>Retrieves the bounding rectangle of a button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>This message does not retrieve the bounding rectangle for buttons whose state is set to the [**TBSTATE\_HIDDEN**](toolbar-button-states.md) value.</remarks>
internal const uint TB_GETITEMRECT = 1053U;
/// <summary>Specifies the size of the TBBUTTON structure.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The system uses the size to determine which version of the common control dynamic-link library (DLL) is being used. If an application uses the [**CreateWindowEx**](/windows/desktop/api/winuser/nf-winuser-createwindowexa) function to create the toolbar, the application must send this message to the toolbar before sending the [**TB\_ADDBITMAP**](tb-addbitmap.md) or [**TB\_ADDBUTTONS**](tb-addbuttons.md) message. The [**CreateToolbarEx**](/windows/desktop/api/Commctrl/nf-commctrl-createtoolbarex) function automatically sends **TB\_BUTTONSTRUCTSIZE**, and the size of the [**TBBUTTON**](/windows/desktop/api/Commctrl/ns-commctrl-tbbutton) structure is a parameter of the function.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-buttonstructsize#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_BUTTONSTRUCTSIZE = 1054U;
/// <summary>Sets the size of buttons on a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>**TB\_SETBUTTONSIZE** should generally be called after adding buttons. Use [**TB\_SETBUTTONWIDTH**](tb-setbuttonwidth.md) to set the maximum and minimum allowed widths for buttons before they are added. Use **TB\_SETBUTTONSIZE** to set the actual size of buttons.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setbuttonsize#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETBUTTONSIZE = 1055U;
/// <summary>Sets the size of the bitmapped images to be added to a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>The size can be set only before adding any bitmaps to the toolbar. If an application does not explicitly set the bitmap size, the size defaults to 16 by 15 pixels.</remarks>
internal const uint TB_SETBITMAPSIZE = 1056U;
/// <summary>Causes a toolbar to be resized.</summary>
/// <returns>No return value.</returns>
/// <remarks>An application sends the **TB\_AUTOSIZE** message after causing the size of a toolbar to change either by setting the button or bitmap size or by adding strings for the first time.</remarks>
internal const uint TB_AUTOSIZE = 1057U;
/// <summary>Retrieves the handle to the tooltip control, if any, associated with the toolbar.</summary>
/// <returns>Returns the handle to the tooltip control, or **NULL** if the toolbar has no associated tooltip.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-gettooltips">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETTOOLTIPS = 1059U;
/// <summary>Associates a tooltip control with a toolbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>Any buttons added to a toolbar before sending the **TB\_SETTOOLTIPS** message will not be registered with the tooltip control.</remarks>
internal const uint TB_SETTOOLTIPS = 1060U;
/// <summary>Sets the window to which the toolbar control sends notification messages.</summary>
/// <returns>The return value is a handle to the previous notification window, or **NULL** if there is no previous notification window.</returns>
/// <remarks>The **TB\_SETPARENT** message does not change the parent window that was specified when the control was created. Calling the [**GetParent**](/windows/desktop/api/winuser/nf-winuser-getparent) function for a toolbar control will return the actual parent window, not the window specified in **TB\_SETPARENT**. To change the control's parent window, call the [**SetParent**](/windows/desktop/api/winuser/nf-winuser-setparent) function.</remarks>
internal const uint TB_SETPARENT = 1061U;
/// <summary>Sets the number of rows of buttons in a toolbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>Because the system does not break up button groups when setting the number of rows, the resulting number of rows might differ from the number requested.</remarks>
internal const uint TB_SETROWS = 1063U;
/// <summary>Retrieves the number of rows of buttons in a toolbar with the TBSTYLE\_WRAPABLE style.</summary>
/// <returns>Returns the number of rows.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getrows">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETROWS = 1064U;
/// <summary>Sets the command identifier of a toolbar button.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setcmdid">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETCMDID = 1066U;
/// <summary>Changes the bitmap for a button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-changebitmap">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_CHANGEBITMAP = 1067U;
/// <summary>Retrieves the index of the bitmap associated with a button in a toolbar.</summary>
/// <returns>Returns the index of the bitmap if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getbitmap">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETBITMAP = 1068U;
/// <summary>Retrieves the display text of a button on a toolbar.</summary>
/// <returns>Returns the length, in characters, of the string pointed to by *lParam*. The length does not include the terminating null character. If unsuccessful, the return value is -1.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. This message does not provide a way for you to know the size of the buffer. If you use this message, first call the message passing **NULL** in the *lParam*, this returns the number of characters, excluding **NULL** that are required. Then call the message a second time to retrieve the string. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. The returned string corresponds to the text that is currently displayed by the button.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getbuttontext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETBUTTONTEXTA = 1069U;
/// <summary>Retrieves the display text of a button on a toolbar.</summary>
/// <returns>Returns the length, in characters, of the string pointed to by *lParam*. The length does not include the terminating null character. If unsuccessful, the return value is -1.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. This message does not provide a way for you to know the size of the buffer. If you use this message, first call the message passing **NULL** in the *lParam*, this returns the number of characters, excluding **NULL** that are required. Then call the message a second time to retrieve the string. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. The returned string corresponds to the text that is currently displayed by the button.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getbuttontext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETBUTTONTEXTW = 1099U;
/// <summary>Replaces an existing bitmap with a new bitmap.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-replacebitmap">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_REPLACEBITMAP = 1070U;
/// <summary>Sets the indentation for the first button in a toolbar control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setindent">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETINDENT = 1071U;
/// <summary>Sets the image list that the toolbar uses to display buttons that are in their default state.</summary>
/// <returns>Returns the handle to the image list previously used to display buttons in their default state, or **NULL** if no image list was previously set.</returns>
/// <remarks>
/// <para>> [!Note] > Your application is responsible for freeing the image list after the toolbar is destroyed.</para>
/// <para>The **TB\_SETIMAGELIST** message cannot be combined with [**TB\_ADDBITMAP**](tb-addbitmap.md). It also cannot be used with toolbars created with [**CreateToolbarEx**](/windows/desktop/api/Commctrl/nf-commctrl-createtoolbarex), which calls **TB\_ADDBITMAP** internally. When you create a toolbar with **CreateToolbarEx** or use **TB\_ADDBITMAP** to add images, the toolbar manages the image list internally. Attempting to modify it with **TB\_SETIMAGELIST** has unpredictable consequences. With [version 5.80](common-control-versions.md) or later of the common controls, button images need not come from the same image list. To use multiple image lists for your toolbar button images: 1. Enable multiple image lists by sending the toolbar control a [**CCM\_SETVERSION**](ccm-setversion.md) message with *wParam* (the version number) set to 5. 2. For each image list you want to use, send the toolbar control a **TB\_SETIMAGELIST** message. Set *wParam* to an application-defined *wParam* value that will be used to identify the list. Set *lParam* to the list's HIMAGELIST handle. 3. For each button, set the **iBitmap** member of the button's [**TBBUTTON**](/windows/desktop/api/Commctrl/ns-commctrl-tbbutton) structure to MAKELONG(*iIndex*, *iImageID*). The *iImageID* value is the ID of the appropriate image list that was defined in step two. The *iIndex* value is the index of the particular image within that list. 4. Add the buttons by sending the toolbar control a [**TB\_ADDBUTTONS**](tb-addbuttons.md) message. The following code fragment illustrates how to add five buttons to a toolbar, with images from three different image lists. Support for multiple image lists is enabled with a [**CCM\_SETVERSION**](ccm-setversion.md) message. The image lists are then set and assigned IDs of 0-2. The buttons are assigned images from the image lists as follows: - Button 0 is from image list zero (ahim\[0\]) with index of 1. - Button 1 is from image list one (ahim\[1\]) with an index of 1. - Button 2 is from image list two (ahim\[2\]) with an index of 1. - Button 3 is from image list zero (ahim\[0\]) with an index of 2. - Button 4 is from image list one (ahim\[1\]) with an index of 3. Finally, the buttons are added to the toolbar control with a [**TB\_ADDBUTTONS**](tb-addbuttons.md) message.</para>
/// <para></para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setimagelist#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETIMAGELIST = 1072U;
/// <summary>Retrieves the image list that a toolbar control uses to display buttons in their default state. A toolbar control uses this image list to display buttons when they are not hot or disabled.</summary>
/// <returns>Returns the handle to the image list, or **NULL** if no image list is set.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETIMAGELIST = 1073U;
/// <summary>Loads system-defined button images into a toolbar control's image list.</summary>
/// <returns>The count of images in the image list. Returns zero if the toolbar has no image list or if the existing image list is empty.</returns>
/// <remarks>You must use the proper image index values when you prepare [**TBBUTTON**](/windows/desktop/api/Commctrl/ns-commctrl-tbbutton) structures prior to sending the [**TB\_ADDBUTTONS**](tb-addbuttons.md) message. For a list of image index values for these preset bitmaps, see [Toolbar Standard Button Image Index Values](toolbar-standard-button-image-index-values.md).</remarks>
internal const uint TB_LOADIMAGES = 1074U;
/// <summary>Retrieves the bounding rectangle for a specified toolbar button.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>This message does not retrieve the bounding rectangle for buttons whose state is set to the [**TBSTATE\_HIDDEN**](toolbar-button-states.md) value.</remarks>
internal const uint TB_GETRECT = 1075U;
/// <summary>Sets the image list that the toolbar control will use to display hot buttons.</summary>
/// <returns>Returns the handle to the image list previously used to display hot buttons, or **NULL** if no image list was previously set.</returns>
/// <remarks>A button is hot when the cursor is over it. Toolbar controls must have the [**TBSTYLE\_FLAT**](toolbar-control-and-button-styles.md) or [**TBSTYLE\_LIST**](toolbar-control-and-button-styles.md) style to have hot items.</remarks>
internal const uint TB_SETHOTIMAGELIST = 1076U;
/// <summary>Retrieves the image list that a toolbar control uses to display hot buttons.</summary>
/// <returns>Returns the handle to the image list that the control uses to display hot buttons, or **NULL** if no hot image list is set.</returns>
/// <remarks>A button is hot when the cursor is over it. Toolbar controls must have the [**TBSTYLE\_FLAT**](toolbar-control-and-button-styles.md) or [**TBSTYLE\_LIST**](toolbar-control-and-button-styles.md) style to have hot items.</remarks>
internal const uint TB_GETHOTIMAGELIST = 1077U;
/// <summary>Sets the image list that the toolbar control will use to display disabled buttons.</summary>
/// <returns>Returns the handle to the image list previously used to display disabled buttons, or **NULL** if no image list was previously set.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setdisabledimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETDISABLEDIMAGELIST = 1078U;
/// <summary>Retrieves the image list that a toolbar control uses to display inactive buttons.</summary>
/// <returns>Returns the handle to the inactive image list, or **NULL** if no inactive image list is set.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getdisabledimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETDISABLEDIMAGELIST = 1079U;
/// <summary>Sets the style for a toolbar control.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETSTYLE = 1080U;
/// <summary>Retrieves the styles currently in use for a toolbar control.</summary>
/// <returns>Returns a **DWORD** value that is a combination of [toolbar control styles](toolbar-control-and-button-styles.md).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETSTYLE = 1081U;
/// <summary>Retrieves the current width and height of toolbar buttons, in pixels.</summary>
/// <returns>Returns a **DWORD** value that contains the width and height values in the low word and high word, respectively.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getbuttonsize">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETBUTTONSIZE = 1082U;
/// <summary>Sets the minimum and maximum button widths in the toolbar control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>Use **TB\_SETBUTTONWIDTH** to set the maximum and minimum allowed widths for buttons before they are added. Use [**TB\_SETBUTTONSIZE**](tb-setbuttonsize.md) to set the actual size of buttons.</remarks>
internal const uint TB_SETBUTTONWIDTH = 1083U;
/// <summary>Sets the maximum number of text rows displayed on a toolbar button.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>To cause text to wrap, you must set the maximum button width by sending a [**TB\_SETBUTTONWIDTH**](tb-setbuttonwidth.md) message. The text wraps at a word break; line breaks ("\\n") in the text are ignored. Text in TBSTYLE\_LIST toolbars is always shown on a single line.</remarks>
internal const uint TB_SETMAXTEXTROWS = 1084U;
/// <summary>Retrieves the maximum number of text rows that can be displayed on a toolbar button.</summary>
/// <returns>Returns an INT value representing the maximum number of text rows that the control will display for a button.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-gettextrows">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETTEXTROWS = 1085U;
/// <summary>Retrieves the display text of a button on a toolbar.</summary>
/// <returns>Returns the length, in characters, of the string pointed to by *lParam*. The length does not include the terminating null character. If unsuccessful, the return value is -1.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. This message does not provide a way for you to know the size of the buffer. If you use this message, first call the message passing **NULL** in the *lParam*, this returns the number of characters, excluding **NULL** that are required. Then call the message a second time to retrieve the string. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. The returned string corresponds to the text that is currently displayed by the button.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getbuttontext#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETBUTTONTEXT = 1099U;
/// <summary>Send this message to initiate saving or restoring a toolbar state.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>For version 4.72 and earlier, to use this message to save or restore a toolbar, the parent window of the toolbar control must implement a handler for the [TBN\_GETBUTTONINFO](tbn-getbuttoninfo.md) notification code. The toolbar issues this notification to retrieve information about each button as it is restored. Version 5.80 includes a new save/restore option. At the beginning of the process, and as each button is saved or restored, your application will receive a [TBN\_SAVE](tbn-save.md) or [TBN\_RESTORE](tbn-restore.md) notification. To use this option, you must implement notification handlers to provide the Shell with the bitmap and state information it needs to successfully save or restore the toolbar state.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-saverestore#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SAVERESTORE = 1100U;
/// <summary>Adds a new string to the toolbar's string pool.</summary>
/// <returns>Returns the index of the first new string if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para>If *wParam* is **NULL**, *lParam* points to a character array with one or more null-terminated strings. The last string in the array must be terminated with two null characters. If *wParam* is the HINSTANCE of the application or of another module containing a string resource, *lParam* is the resource identifier of the string. Each item in the string must begin with an arbitrary separator character, and the string must end with two such characters. For example, the text for three buttons might appear in the string table as "/New/Open/Save//". The message returns the index of "New" in the toolbar's string pool, and the other items are in consecutive positions.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-addstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ADDSTRING = 1101U;
/// <summary>Retrieves the IDropTarget for a toolbar control.</summary>
/// <returns>Returns an **HRESULT** value indicating success or failure of the operation.</returns>
/// <remarks>The toolbar's [**IDropTarget**](/windows/desktop/api/oleidl/nn-oleidl-idroptarget) is used by the toolbar when objects are dragged over or dropped onto it.</remarks>
internal const uint TB_GETOBJECT = 1086U;
/// <summary>Retrieves the index of the hot item in a toolbar.</summary>
/// <returns>Returns the index of the hot item, or -1 if no hot item is set. Toolbar controls that do not have the [**TBSTYLE\_FLAT**](toolbar-control-and-button-styles.md) style do not have hot items.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-gethotitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETHOTITEM = 1095U;
/// <summary>TB_SETHOTITEM message - Sets the hot item in a toolbar.</summary>
/// <returns>Returns the index of the previous hot item, or -1 if there was no hot item.</returns>
/// <remarks>The behavior of this message is not defined for toolbars that do not have the [**TBSTYLE\_FLAT**](toolbar-control-and-button-styles.md) style.</remarks>
internal const uint TB_SETHOTITEM = 1096U;
/// <summary>Sets the anchor highlight setting for a toolbar.</summary>
/// <returns>Returns the previous anchor highlight setting. If this value is nonzero, anchor highlighting was enabled. If this value is zero, anchor highlighting was disabled.</returns>
/// <remarks>Anchor highlighting in a toolbar means that the last highlighted item will remain highlighted until another item is highlighted. This occurs even if the cursor leaves the toolbar control.</remarks>
internal const uint TB_SETANCHORHIGHLIGHT = 1097U;
/// <summary>Retrieves the anchor highlight setting for a toolbar.</summary>
/// <returns>Returns a Boolean value that indicates if anchor highlighting is set. If this value is nonzero, anchor highlighting is enabled. If this value is zero, it is disabled.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getanchorhighlight">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETANCHORHIGHLIGHT = 1098U;
/// <summary>Determines the ID of the button that corresponds to the specified accelerator character.</summary>
/// <returns>Returns a nonzero value if one of the buttons has *wParam* as its accelerator character, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-mapaccelerator">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_MAPACCELERATORA = 1102U;
/// <summary>Retrieves the current insertion mark for the toolbar.</summary>
/// <returns>Always returns **TRUE**.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getinsertmark">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETINSERTMARK = 1103U;
/// <summary>Sets the current insertion mark for the toolbar.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setinsertmark">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETINSERTMARK = 1104U;
/// <summary>Retrieves the insertion mark information for a point in a toolbar.</summary>
/// <returns>Returns nonzero if the point is an insertion mark, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-insertmarkhittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_INSERTMARKHITTEST = 1105U;
/// <summary>Moves a button from one index to another.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-movebutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_MOVEBUTTON = 1106U;
/// <summary>Retrieves the total size of all of the visible buttons and separators in the toolbar.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getmaxsize">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETMAXSIZE = 1107U;
/// <summary>Sets the extended styles for a toolbar control.</summary>
/// <returns>Returns a **DWORD** that represents the previous extended styles. This value can be a combination of [extended styles](toolbar-extended-styles.md).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setextendedstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETEXTENDEDSTYLE = 1108U;
/// <summary>Retrieves the extended styles for a toolbar control.</summary>
/// <returns>Returns a **DWORD** that represents the styles currently in use for the toolbar control. This value can be a combination of [extended styles](toolbar-extended-styles.md).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getextendedstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETEXTENDEDSTYLE = 1109U;
/// <summary>Retrieves the padding for a toolbar control.</summary>
/// <returns>Returns a **DWORD** value that contains the horizontal padding in the low word and the vertical padding in the high word, in pixels.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getpadding">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETPADDING = 1110U;
/// <summary>Sets the padding for a toolbar control.</summary>
/// <returns>Returns a **DWORD** value that contains the previous horizontal padding in the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) and the previous vertical padding in the [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)), in pixels.</returns>
/// <remarks>The padding values are used to create a blank area between the edge of the button and the button's image and/or text. Where and how much padding is actually applied depends on the type of the button and whether it has an image. The horizontal padding is applied to both the right and left of the button, and the vertical padding is applied to both the top and bottom of the button. Padding is only applied to buttons that have the [**TBSTYLE\_AUTOSIZE**](toolbar-control-and-button-styles.md) style.</remarks>
internal const uint TB_SETPADDING = 1111U;
/// <summary>Sets the color used to draw the insertion mark for the toolbar.</summary>
/// <returns>Returns a **COLORREF** value that contains the previous insertion mark color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setinsertmarkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETINSERTMARKCOLOR = 1112U;
/// <summary>Retrieves the color used to draw the insertion mark for the toolbar.</summary>
/// <returns>Returns a [**COLORREF**](/windows/desktop/gdi/colorref) value that contains the current insertion mark color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getinsertmarkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETINSERTMARKCOLOR = 1113U;
/// <summary>Sets the color scheme information for the toolbar control.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para>The toolbar control uses the color scheme information when drawing the 3-D elements in the control. When visual styles are enabled, this message has no effect.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setcolorscheme#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETCOLORSCHEME = 8194U;
/// <summary>Retrieves the color scheme information from the toolbar control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getcolorscheme">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETCOLORSCHEME = 8195U;
/// <summary>TB_SETUNICODEFORMAT message - Sets the Unicode character format flag for the control. This message allows you to change the character set used by the control at run time rather than having to re-create the control.</summary>
/// <returns>Returns the previous Unicode format flag for the control.</returns>
/// <remarks>See the remarks for [**CCM\_SETUNICODEFORMAT**](ccm-setunicodeformat.md) for a discussion of this message.</remarks>
internal const uint TB_SETUNICODEFORMAT = 8197U;
/// <summary>TB_GETUNICODEFORMAT message - Retrieves the Unicode character format flag for the control.</summary>
/// <returns>Returns the Unicode format flag for the control. If this value is nonzero, the control is using Unicode characters. If this value is zero, the control is using ANSI characters.</returns>
/// <remarks>See the remarks for [**CCM\_GETUNICODEFORMAT**](ccm-getunicodeformat.md) for a discussion of this message.</remarks>
internal const uint TB_GETUNICODEFORMAT = 8198U;
/// <summary>Determines the ID of the button that corresponds to the specified accelerator character.</summary>
/// <returns>Returns a nonzero value if one of the buttons has *wParam* as its accelerator character, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-mapaccelerator">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_MAPACCELERATORW = 1114U;
/// <summary>Determines the ID of the button that corresponds to the specified accelerator character.</summary>
/// <returns>Returns a nonzero value if one of the buttons has *wParam* as its accelerator character, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-mapaccelerator">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_MAPACCELERATOR = 1114U;
/// <summary>Retrieves the flags that describe the type of bitmap to be used.</summary>
/// <returns>Returns a **DWORD** value that describes the type of bitmap that should be used. If this return value has the TBBF\_LARGE flag set, applications should use large bitmaps (24 x 24); otherwise, applications should use small bitmaps (16 x 16). All other bits are reserved.</returns>
/// <remarks>The value returned by **TB\_GETBITMAPFLAGS** is only advisory. The toolbar control recommends large or small bitmaps based upon whether the user has chosen large or small fonts.</remarks>
internal const uint TB_GETBITMAPFLAGS = 1065U;
/// <summary>Retrieves extended information for a button in a toolbar.</summary>
/// <returns>Returns the zero-based index of the button, or -1 if an error occurs.</returns>
/// <remarks>When you use [**TB\_ADDBUTTONS**](tb-addbuttons.md) or [**TB\_INSERTBUTTON**](tb-insertbutton.md) to place buttons on the toolbar, the button text is commonly specified by its string pool index. **TB\_GETBUTTONINFO** will not retrieve this string. To use **TB\_GETBUTTONINFO** to retrieve button text, you must first set the text string with [**TB\_SETBUTTONINFO**](tb-setbuttoninfo.md). Once you have set the button text with **TB\_SETBUTTONINFO**, you can no longer use the string pool index.</remarks>
internal const uint TB_GETBUTTONINFOW = 1087U;
/// <summary>Sets the information for an existing button in a toolbar.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>Text is commonly assigned to buttons when they are added to a toolbar by specifying the index of a string in the toolbar's string pool. If you use a **TB\_SETBUTTONINFO** to assign new text to a button, it will permanently override the text from the string pool. You can change the text by calling **TB\_SETBUTTONINFO** again, but you cannot reassign the string from the string pool.</remarks>
internal const uint TB_SETBUTTONINFOW = 1088U;
/// <summary>Retrieves extended information for a button in a toolbar.</summary>
/// <returns>Returns the zero-based index of the button, or -1 if an error occurs.</returns>
/// <remarks>When you use [**TB\_ADDBUTTONS**](tb-addbuttons.md) or [**TB\_INSERTBUTTON**](tb-insertbutton.md) to place buttons on the toolbar, the button text is commonly specified by its string pool index. **TB\_GETBUTTONINFO** will not retrieve this string. To use **TB\_GETBUTTONINFO** to retrieve button text, you must first set the text string with [**TB\_SETBUTTONINFO**](tb-setbuttoninfo.md). Once you have set the button text with **TB\_SETBUTTONINFO**, you can no longer use the string pool index.</remarks>
internal const uint TB_GETBUTTONINFOA = 1089U;
/// <summary>Sets the information for an existing button in a toolbar.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>Text is commonly assigned to buttons when they are added to a toolbar by specifying the index of a string in the toolbar's string pool. If you use a **TB\_SETBUTTONINFO** to assign new text to a button, it will permanently override the text from the string pool. You can change the text by calling **TB\_SETBUTTONINFO** again, but you cannot reassign the string from the string pool.</remarks>
internal const uint TB_SETBUTTONINFOA = 1090U;
/// <summary>Retrieves extended information for a button in a toolbar.</summary>
/// <returns>Returns the zero-based index of the button, or -1 if an error occurs.</returns>
/// <remarks>When you use [**TB\_ADDBUTTONS**](tb-addbuttons.md) or [**TB\_INSERTBUTTON**](tb-insertbutton.md) to place buttons on the toolbar, the button text is commonly specified by its string pool index. **TB\_GETBUTTONINFO** will not retrieve this string. To use **TB\_GETBUTTONINFO** to retrieve button text, you must first set the text string with [**TB\_SETBUTTONINFO**](tb-setbuttoninfo.md). Once you have set the button text with **TB\_SETBUTTONINFO**, you can no longer use the string pool index.</remarks>
internal const uint TB_GETBUTTONINFO = 1087U;
/// <summary>Sets the information for an existing button in a toolbar.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>Text is commonly assigned to buttons when they are added to a toolbar by specifying the index of a string in the toolbar's string pool. If you use a **TB\_SETBUTTONINFO** to assign new text to a button, it will permanently override the text from the string pool. You can change the text by calling **TB\_SETBUTTONINFO** again, but you cannot reassign the string from the string pool.</remarks>
internal const uint TB_SETBUTTONINFO = 1088U;
/// <summary>Inserts a button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-insertbutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_INSERTBUTTONW = 1091U;
/// <summary>Adds one or more buttons to a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>If the toolbar was created using the [**CreateWindowEx**](/windows/desktop/api/winuser/nf-winuser-createwindowexa) function, you must send the [**TB\_BUTTONSTRUCTSIZE**](tb-buttonstructsize.md) message to the toolbar before sending **TB\_ADDBUTTONS**. See [**TB\_SETIMAGELIST**](tb-setimagelist.md) for a discussion of how to assign bitmaps to toolbar buttons from one or more image lists.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-addbuttons#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ADDBUTTONSW = 1092U;
/// <summary>Determines where a point lies in a toolbar control.</summary>
/// <returns>Returns an integer value. If the return value is zero or a positive value, it is the zero-based index of the nonseparator item in which the point lies. If the return value is negative, the point does not lie within a button. The absolute value of the return value is the index of a separator item or the nearest nonseparator item.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-hittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_HITTEST = 1093U;
/// <summary>Inserts a button in a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-insertbutton">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_INSERTBUTTON = 1091U;
/// <summary>Adds one or more buttons to a toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>If the toolbar was created using the [**CreateWindowEx**](/windows/desktop/api/winuser/nf-winuser-createwindowexa) function, you must send the [**TB\_BUTTONSTRUCTSIZE**](tb-buttonstructsize.md) message to the toolbar before sending **TB\_ADDBUTTONS**. See [**TB\_SETIMAGELIST**](tb-setimagelist.md) for a discussion of how to assign bitmaps to toolbar buttons from one or more image lists.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-addbuttons#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_ADDBUTTONS = 1092U;
/// <summary>Sets the text drawing flags for the toolbar.</summary>
/// <returns>Returns the previous text drawing flags.</returns>
/// <remarks>The *wParam* parameter allows you to specify which flags will be used when drawing the text, even if these flags are turned off. For example, if you do not want the DT\_CENTER flag used when drawing text, you would add the DT\_CENTER flag to *wParam* and not specify the DT\_CENTER flag in *lParam*. This prevents the control from passing the DT\_CENTER flag to the [**DrawText**](/windows/desktop/api/winuser/nf-winuser-drawtext) function.</remarks>
internal const uint TB_SETDRAWTEXTFLAGS = 1094U;
/// <summary>Retrieves a string from a toolbar's string pool.</summary>
/// <returns>Returns the string length if successful, or -1 otherwise.</returns>
/// <remarks>This message returns the specified string from the toolbar's string pool. It does not necessarily correspond to the text string currently being displayed by a button. To retrieve a button's current text string, send the toolbar a [**TB\_GETBUTTONTEXT**](tb-getbuttontext.md) message.</remarks>
internal const uint TB_GETSTRINGW = 1115U;
/// <summary>Retrieves a string from a toolbar's string pool.</summary>
/// <returns>Returns the string length if successful, or -1 otherwise.</returns>
/// <remarks>This message returns the specified string from the toolbar's string pool. It does not necessarily correspond to the text string currently being displayed by a button. To retrieve a button's current text string, send the toolbar a [**TB\_GETBUTTONTEXT**](tb-getbuttontext.md) message.</remarks>
internal const uint TB_GETSTRINGA = 1116U;
/// <summary>Retrieves a string from a toolbar's string pool.</summary>
/// <returns>Returns the string length if successful, or -1 otherwise.</returns>
/// <remarks>This message returns the specified string from the toolbar's string pool. It does not necessarily correspond to the text string currently being displayed by a button. To retrieve a button's current text string, send the toolbar a [**TB\_GETBUTTONTEXT**](tb-getbuttontext.md) message.</remarks>
internal const uint TB_GETSTRING = 1115U;
/// <summary>Sets the bounding size for a multi-column toolbar control.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>The bounding size controls how buttons are organized into columns. If the toolbar control does not have the [**TBSTYLE\_EX\_MULTICOLUMN**](toolbar-extended-styles.md) style, this message has no effect.</remarks>
internal const uint TB_SETBOUNDINGSIZE = 1117U;
/// <summary>TB_SETHOTITEM2 message - Sets the hot item in a toolbar.</summary>
/// <returns>Returns the index of the previous hot item, or -1 if there was no hot item.</returns>
/// <remarks>The behavior of this message is not defined for toolbars that do not have the [**TBSTYLE\_FLAT**](toolbar-control-and-button-styles.md) style.</remarks>
internal const uint TB_SETHOTITEM2 = 1118U;
/// <summary>Retrieves a count of toolbar buttons that have the specified accelerator character.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>First, the system queries all toolbar buttons for matching accelerators. If no matches are found, the system sends the [TBN\_MAPACCELERATOR](tbn-mapaccelerator.md) notification to the parent window, requesting the index of the button that has the specified accelerator character. If the parent provides an index, the count is set to 1.</remarks>
internal const uint TB_HASACCELERATOR = 1119U;
/// <summary>Sets the distance between the toolbar buttons on a specific toolbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>The gap between buttons only applies to the toolbar control window that receives this message. Receipt of this message triggers a repaint of the toolbar, if the toolbar is currently visible.</remarks>
internal const uint TB_SETLISTGAP = 1120U;
/// <summary>Gets the number of image lists associated with the toolbar.</summary>
/// <returns>Returns the number of image lists.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getimagelistcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETIMAGELISTCOUNT = 1122U;
/// <summary>Gets the ideal size of the toolbar.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getidealsize">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETIDEALSIZE = 1123U;
/// <summary>Retrieves the metrics of a toolbar control.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getmetrics#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETMETRICS = 1125U;
/// <summary>Sets the metrics of a toolbar control.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setmetrics#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETMETRICS = 1126U;
/// <summary>Gets the bounding rectangle of the dropdown window for a toolbar item with style BTNS\_DROPDOWN.</summary>
/// <returns>Always returns nonzero.</returns>
/// <remarks>The item must have the [**BTNS\_DROPDOWN**](toolbar-control-and-button-styles.md) style.</remarks>
internal const uint TB_GETITEMDROPDOWNRECT = 1127U;
/// <summary>Sets the image list that the toolbar uses to display buttons that are in a pressed state.</summary>
/// <returns>Returns the handle to the image list previously used to display buttons in their pressed state, or **NULL** if no such image list was previously set.</returns>
/// <remarks>
/// <para>> [!Note] > Your application is responsible for freeing the image list after the toolbar is destroyed.</para>
/// <para>The **TB\_SETPRESSEDIMAGELIST** message cannot be combined with [**TB\_ADDBITMAP**](tb-addbitmap.md). It also cannot be used with toolbars created with [**CreateToolbarEx**](/windows/desktop/api/Commctrl/nf-commctrl-createtoolbarex), which calls **TB\_ADDBITMAP** internally. When you create a toolbar with **CreateToolbarEx** or use **TB\_ADDBITMAP** to add images, the toolbar manages the image list internally. Attempting to modify it with **TB\_SETPRESSEDIMAGELIST** has unpredictable consequences. Button images need not come from the same image list. To use multiple image lists for your toolbar button images: 1. Enable multiple image lists by sending the toolbar control a [**CCM\_SETVERSION**](ccm-setversion.md) message with *wParam* (the version number) set to 5. 2. For each image list you want to use, send the toolbar control a **TB\_SETPRESSEDIMAGELIST** message. Set *wParam* to an application-defined *wParam* value that will be used to identify the list. Set *lParam* to the list's HIMAGELIST handle. 3. For each button, set the **iBitmap** member of the button's [**TBBUTTON**](/windows/desktop/api/Commctrl/ns-commctrl-tbbutton) structure to MAKELONG(*iIndex*, *iImageID*). The *iImageID* value is the ID of the appropriate image list that was defined in step two. The *iIndex* value is the index of the particular image within that list. 4. Add the buttons by sending the toolbar control a [**TB\_ADDBUTTONS**](tb-addbuttons.md) message. The following code fragment illustrates how to add five buttons to a toolbar, with images from three different image lists. Support for multiple image lists is enabled with a [**CCM\_SETVERSION**](ccm-setversion.md) message. The image lists are then set and assigned IDs of 0-2. The buttons are assigned images from the image lists as follows: - Button 0 is from image list zero (ahim\[0\]) with index of 1. - Button 1 is from image list one (ahim\[1\]) with an index of 1. - Button 2 is from image list two (ahim\[2\]) with an index of 1. - Button 3 is from image list zero (ahim\[0\]) with an index of 2. - Button 4 is from image list one (ahim\[1\]) with an index of 3. Finally, the buttons are added to the toolbar control with a [**TB\_ADDBUTTONS**](tb-addbuttons.md) message.</para>
/// <para></para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setpressedimagelist#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETPRESSEDIMAGELIST = 1128U;
/// <summary>Gets the image list that a toolbar control uses to display buttons in a pressed state.</summary>
/// <returns>Returns the handle to the image list, or **NULL** if no image list is set.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-getpressedimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_GETPRESSEDIMAGELIST = 1129U;
/// <summary>Sets the visual style of a toolbar control.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para>Sending this message is equivalent to calling [**SetWindowTheme**](/windows/desktop/api/Uxtheme/nf-uxtheme-setwindowtheme) on the toolbar and its tooltip control, if any.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tb-setwindowtheme#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TB_SETWINDOWTHEME = 8203U;
internal const uint TB_LINEUP = 0U;
internal const uint TB_LINEDOWN = 1U;
internal const uint TB_PAGEUP = 2U;
internal const uint TB_PAGEDOWN = 3U;
internal const uint TB_THUMBPOSITION = 4U;
internal const uint TB_THUMBTRACK = 5U;
internal const uint TB_TOP = 6U;
internal const uint TB_BOTTOM = 7U;
internal const uint TB_ENDTRACK = 8U;
/// <summary>Retrieves the minimum position for the slider in a trackbar.</summary>
/// <returns>Returns a 32-bit value that specifies the minimum position in the trackbar's range of minimum to maximum slider positions.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-getrangemin">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETRANGEMIN = 1025U;
/// <summary>Retrieves the maximum position for the slider in a trackbar.</summary>
/// <returns>Returns a 32-bit value that specifies the maximum position in the trackbar's range of minimum to maximum slider positions.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-getrangemax">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETRANGEMAX = 1026U;
/// <summary>Retrieves the logical position of a tick mark in a trackbar. The logical position can be any of the integer values in the trackbar's range of minimum to maximum slider positions.</summary>
/// <returns>Returns the logical position of the specified tick mark, or -1 if *wParam* does not specify a valid index.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-gettic">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETTIC = 1027U;
/// <summary>Sets a tick mark in a trackbar at the specified logical position.</summary>
/// <returns>Returns **TRUE** if the tick mark is set, or **FALSE** otherwise.</returns>
/// <remarks>A trackbar creates its own first and last tick marks. Do not use this message to set the first and last tick marks.</remarks>
internal const uint TBM_SETTIC = 1028U;
/// <summary>TBM_SETPOS message - Sets the current logical position of the slider in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-setpos">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETPOS = 1029U;
/// <summary>Sets the range of minimum and maximum logical positions for the slider in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>If the current slider position is outside the new range, the **TBM\_SETRANGE** message sets the slider position to the new maximum or minimum value. Because this message takes two 16-bit unsigned integer values, the maximum range that this message can specify is from 0 to 65,535. To specify larger range values, use the [**TBM\_SETRANGEMIN**](tbm-setrangemin.md) and [**TBM\_SETRANGEMAX**](tbm-setrangemax.md) messages.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-setrange#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETRANGE = 1030U;
/// <summary>Sets the minimum logical position for the slider in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>If the current slider position is less than the new minimum, the **TBM\_SETRANGEMIN** message sets the slider position to the new minimum value.</remarks>
internal const uint TBM_SETRANGEMIN = 1031U;
/// <summary>Sets the maximum logical position for the slider in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>If the current slider position is greater than the new maximum, the **TBM\_SETRANGEMAX** message sets the slider position to the new maximum value.</remarks>
internal const uint TBM_SETRANGEMAX = 1032U;
/// <summary>Removes the current tick marks from a trackbar. This message does not remove the first and last tick marks, which are created automatically by the trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-cleartics">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_CLEARTICS = 1033U;
/// <summary>Sets the starting and ending positions for the available selection range in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>This message is ignored if the trackbar does not have the [**TBS\_ENABLESELRANGE**](trackbar-control-styles.md) style. **TBM\_SETSEL** allows you to restrict the pointer to only a portion of the range available to the progress bar.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-setsel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETSEL = 1034U;
/// <summary>Sets the starting logical position of the current selection range in a trackbar. This message is ignored if the trackbar does not have the TBS\_ENABLESELRANGE style.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-setselstart">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETSELSTART = 1035U;
/// <summary>Sets the ending logical position of the current selection range in a trackbar. This message is ignored if the trackbar does not have the TBS\_ENABLESELRANGE style.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-setselend">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETSELEND = 1036U;
/// <summary>Retrieves the address of an array that contains the positions of the tick marks for a trackbar.</summary>
/// <returns>Returns the address of an array of **DWORD** values. The elements of the array specify the logical positions of the trackbar's tick marks, not including the first and last tick marks created by the trackbar. The logical positions can be any of the integer values in the trackbar's range of minimum to maximum slider positions.</returns>
/// <remarks>The number of elements in the array is two less than the tick count returned by the [**TBM\_GETNUMTICS**](tbm-getnumtics.md) message. Note that the values in the array may include duplicate positions and may not be in sequential order. The returned pointer is valid until you change the trackbar's tick marks.</remarks>
internal const uint TBM_GETPTICS = 1038U;
/// <summary>Retrieves the current physical position of a tick mark in a trackbar.</summary>
/// <returns>Returns the distance, in client coordinates, from the left or top of the trackbar's client area to the specified tick mark. The return value is the x-coordinate of the tick mark for a horizontal trackbar or the y-coordinate for a vertical trackbar. If *wParam* is not a valid index, the return value is -1.</returns>
/// <remarks>
/// <para>Because the first and last tick marks are not available through this message, valid indexes are offset from their tick position on the trackbar. If the difference between [**TBM\_GETRANGEMIN**](tbm-getrangemin.md) and [**TBM\_GETRANGEMAX**](tbm-getrangemax.md) is less than two, then there is no valid index and this message will fail. The following illustrates the relation between the ticks on a trackbar, the ticks available through this message, and their zero-based indexes. </para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-getticpos#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETTICPOS = 1039U;
/// <summary>Retrieves the number of tick marks in a trackbar.</summary>
/// <returns>If no [tick flag](trackbar-control-styles.md) is set, it returns 2 for the beginning and ending ticks. If [**TBS\_NOTICKS**](trackbar-control-styles.md) is set, it returns zero. Otherwise, it takes the difference between the range minimum and maximum, divides by the tick frequency, and adds 2.</returns>
/// <remarks>The **TBM\_GETNUMTICS** message counts all of the tick marks, including the first and last tick marks created by the trackbar.</remarks>
internal const uint TBM_GETNUMTICS = 1040U;
/// <summary>Retrieves the starting position of the current selection range in a trackbar.</summary>
/// <returns>Returns a 32-bit value that specifies the starting position of the current selection range.</returns>
/// <remarks>A trackbar can have a selection range only if you specified the [**TBS\_ENABLESELRANGE**](trackbar-control-styles.md) style when you created it.</remarks>
internal const uint TBM_GETSELSTART = 1041U;
/// <summary>Retrieves the ending position of the current selection range in a trackbar.</summary>
/// <returns>Returns a 32-bit value that specifies the ending position of the current selection range.</returns>
/// <remarks>A trackbar can have a selection range only if you specified the [**TBS\_ENABLESELRANGE**](trackbar-control-styles.md) style when you created it.</remarks>
internal const uint TBM_GETSELEND = 1042U;
/// <summary>Clears the current selection range in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>A trackbar can have a selection range only if you specified the [**TBS\_ENABLESELRANGE**](trackbar-control-styles.md) style when you created it.</remarks>
internal const uint TBM_CLEARSEL = 1043U;
/// <summary>Sets the interval frequency for tick marks in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>The trackbar must have the [**TBS\_AUTOTICKS**](trackbar-control-styles.md) style to use this message.</remarks>
internal const uint TBM_SETTICFREQ = 1044U;
/// <summary>Sets the number of logical positions the trackbar's slider moves in response to keyboard input, such as the or keys, or mouse input, such as clicks in the trackbar's channel.</summary>
/// <returns>Returns a 32-bit value that specifies the previous page size.</returns>
/// <remarks>The trackbar also sends a [**WM\_HSCROLL**](wm-hscroll.md) or [**WM\_VSCROLL**](wm-vscroll.md) message with the TB\_PAGEUP and TB\_PAGEDOWN notification codes to its parent window when it receives keyboard or mouse input that scrolls the page.</remarks>
internal const uint TBM_SETPAGESIZE = 1045U;
/// <summary>Retrieves the number of logical positions the trackbar's slider moves in response to keyboard input, such as the or keys, or mouse input, such as clicks in the trackbar's channel.</summary>
/// <returns>Returns a 32-bit value that specifies the page size for the trackbar.</returns>
/// <remarks>The trackbar also sends a [**WM\_HSCROLL**](wm-hscroll.md) or [**WM\_VSCROLL**](wm-vscroll.md) message with the TB\_PAGEUP and TB\_PAGEDOWN notification codes to its parent window when it receives keyboard or mouse input that scrolls the page.</remarks>
internal const uint TBM_GETPAGESIZE = 1046U;
/// <summary>Sets the number of logical positions the trackbar's slider moves in response to keyboard input from the arrow keys, such as the or keys. The logical positions are the integer increments in the trackbar's range of minimum to maximum slider positions.</summary>
/// <returns>Returns a 32-bit value that specifies the previous line size.</returns>
/// <remarks>
/// <para>The default setting for the line size is 1. The trackbar also sends a [**WM\_HSCROLL**](wm-hscroll.md) or [**WM\_VSCROLL**](wm-vscroll.md) message with the TB\_LINEUP and TB\_LINEDOWN notification codes to its parent window when the user presses the arrow keys.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-setlinesize#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETLINESIZE = 1047U;
/// <summary>Retrieves the number of logical positions the trackbar's slider moves in response to keyboard input from the arrow keys, such as the or keys. The logical positions are the integer increments in the trackbar's range of minimum to maximum slider positions.</summary>
/// <returns>Returns a 32-bit value that specifies the line size for the trackbar.</returns>
/// <remarks>
/// <para>The default setting for the line size is 1. The trackbar also sends a [**WM\_HSCROLL**](wm-hscroll.md) or [**WM\_VSCROLL**](wm-vscroll.md) message with the TB\_LINEUP and TB\_LINEDOWN notification codes to its parent window when the user presses the arrow keys.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-getlinesize#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETLINESIZE = 1048U;
/// <summary>Retrieves the size and position of the bounding rectangle for the slider in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-getthumbrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETTHUMBRECT = 1049U;
/// <summary>Retrieves the size and position of the bounding rectangle for a trackbar's channel.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-getchannelrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETCHANNELRECT = 1050U;
/// <summary>Sets the length of the slider in a trackbar. This message is ignored if the trackbar does not have the TBS\_FIXEDLENGTH style.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-setthumblength">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETTHUMBLENGTH = 1051U;
/// <summary>Retrieves the length of the slider in a trackbar.</summary>
/// <returns>Returns the length, in pixels, of the slider.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-getthumblength">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETTHUMBLENGTH = 1052U;
/// <summary>Assigns a tooltip control to a trackbar control.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>When a trackbar control is created with the [**TBS\_TOOLTIPS**](trackbar-control-styles.md) style, it creates a default tooltip control that appears next to the slider, displaying the slider's current position.</remarks>
internal const uint TBM_SETTOOLTIPS = 1053U;
/// <summary>Retrieves the handle to the tooltip control assigned to the trackbar, if any.</summary>
/// <returns>Returns the handle to the tooltip control assigned to the trackbar, or **NULL** if tooltips are not in use. If the trackbar control does not use the [**TBS\_TOOLTIPS**](trackbar-control-styles.md) style, the return value is **NULL**.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-gettooltips">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETTOOLTIPS = 1054U;
/// <summary>Positions a tooltip control used by a trackbar control. Trackbar controls that use the TBS\_TOOLTIPS style display tooltips.</summary>
/// <returns>Returns a value that represents the tooltip control's previous location. The return value equals one of the possible values for *wParam*.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-settipside">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETTIPSIDE = 1055U;
/// <summary>Assigns a window as the buddy window for a trackbar control. Trackbar buddy windows are automatically displayed in a location relative to the control's orientation (horizontal or vertical).</summary>
/// <returns>Returns the handle to the window that was previously assigned to the control at that location.</returns>
/// <remarks>
/// <para>> [!Note] > Trackbar controls support up to two buddy windows. This can be useful when you must display text or images at each end of the control.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-setbuddy#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_SETBUDDY = 1056U;
/// <summary>Retrieves the handle to a trackbar control buddy window at a given location. The specified location is relative to the control's orientation (horizontal or vertical).</summary>
/// <returns>Returns the handle to the buddy window at the location specified by *wParam*, or **NULL** if no buddy window exists at that location.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tbm-getbuddy">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TBM_GETBUDDY = 1057U;
/// <summary>TBM_SETPOSNOTIFY message - Sets the current logical position of the slider in a trackbar.</summary>
/// <returns>No return value.</returns>
/// <remarks>Calling **TBM\_SETPOSNOTIFY** will set the trackbar slider location like [**TBM\_SETPOS**](tbm-setpos.md) would, but it will also cause the trackbar to notify its parent of a move via a [**WM\_HSCROLL**](wm-hscroll.md) or [**WM\_VSCROLL**](wm-vscroll.md) message.</remarks>
internal const uint TBM_SETPOSNOTIFY = 1058U;
/// <summary>TBM_SETUNICODEFORMAT message - Sets the Unicode character format flag for the control. This message allows you to change the character set used by the control at run time rather than having to re-create the control.</summary>
/// <returns>Returns the previous Unicode format flag for the control.</returns>
/// <remarks>See the remarks for [**CCM\_SETUNICODEFORMAT**](ccm-setunicodeformat.md) for a discussion of this message.</remarks>
internal const uint TBM_SETUNICODEFORMAT = 8197U;
/// <summary>TBM_GETUNICODEFORMAT message - Retrieves the Unicode character format flag for the control.</summary>
/// <returns>Returns the Unicode format flag for the control. If this value is nonzero, the control is using Unicode characters. If this value is zero, the control is using ANSI characters.</returns>
/// <remarks>See the remarks for [**CCM\_GETUNICODEFORMAT**](ccm-getunicodeformat.md) for a discussion of this message.</remarks>
internal const uint TBM_GETUNICODEFORMAT = 8198U;
internal const uint TBS_CONTEXT_VERSION_ONE = 1U;
internal const uint TBS_SUCCESS = 0U;
internal const uint TBS_OWNERAUTH_TYPE_FULL = 1U;
internal const uint TBS_OWNERAUTH_TYPE_ADMIN = 2U;
internal const uint TBS_OWNERAUTH_TYPE_USER = 3U;
internal const uint TBS_OWNERAUTH_TYPE_ENDORSEMENT = 4U;
internal const uint TBS_OWNERAUTH_TYPE_ENDORSEMENT_20 = 12U;
internal const uint TBS_OWNERAUTH_TYPE_STORAGE_20 = 13U;
internal const uint TBS_CONTEXT_VERSION_TWO = 2U;
internal const uint TBS_TCGLOG_SRTM_CURRENT = 0U;
internal const uint TBS_TCGLOG_DRTM_CURRENT = 1U;
internal const uint TBS_TCGLOG_SRTM_BOOT = 2U;
internal const uint TBS_TCGLOG_SRTM_RESUME = 3U;
internal const uint TBS_TCGLOG_DRTM_BOOT = 4U;
internal const uint TBS_TCGLOG_DRTM_RESUME = 5U;
internal const uint TBS_AUTOTICKS = 1U;
internal const uint TBS_VERT = 2U;
internal const uint TBS_HORZ = 0U;
internal const uint TBS_TOP = 4U;
internal const uint TBS_BOTTOM = 0U;
internal const uint TBS_LEFT = 4U;
internal const uint TBS_RIGHT = 0U;
internal const uint TBS_BOTH = 8U;
internal const uint TBS_NOTICKS = 16U;
internal const uint TBS_ENABLESELRANGE = 32U;
internal const uint TBS_FIXEDLENGTH = 64U;
internal const uint TBS_NOTHUMB = 128U;
internal const uint TBS_TOOLTIPS = 256U;
internal const uint TBS_REVERSED = 512U;
internal const uint TBS_DOWNISLEFT = 1024U;
internal const uint TBS_NOTIFYBEFOREMOVE = 2048U;
internal const uint TBS_TRANSPARENTBKGND = 4096U;
internal static readonly winmdroot.Foundation.HRESULT TBS_E_INTERNAL_ERROR = (winmdroot.Foundation.HRESULT)(-2144845823);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_BAD_PARAMETER = (winmdroot.Foundation.HRESULT)(-2144845822);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_INVALID_OUTPUT_POINTER = (winmdroot.Foundation.HRESULT)(-2144845821);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_INVALID_CONTEXT = (winmdroot.Foundation.HRESULT)(-2144845820);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_INSUFFICIENT_BUFFER = (winmdroot.Foundation.HRESULT)(-2144845819);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_IOERROR = (winmdroot.Foundation.HRESULT)(-2144845818);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_INVALID_CONTEXT_PARAM = (winmdroot.Foundation.HRESULT)(-2144845817);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_SERVICE_NOT_RUNNING = (winmdroot.Foundation.HRESULT)(-2144845816);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_TOO_MANY_TBS_CONTEXTS = (winmdroot.Foundation.HRESULT)(-2144845815);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_TOO_MANY_RESOURCES = (winmdroot.Foundation.HRESULT)(-2144845814);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_SERVICE_START_PENDING = (winmdroot.Foundation.HRESULT)(-2144845813);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_PPI_NOT_SUPPORTED = (winmdroot.Foundation.HRESULT)(-2144845812);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_COMMAND_CANCELED = (winmdroot.Foundation.HRESULT)(-2144845811);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_BUFFER_TOO_LARGE = (winmdroot.Foundation.HRESULT)(-2144845810);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_TPM_NOT_FOUND = (winmdroot.Foundation.HRESULT)(-2144845809);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_SERVICE_DISABLED = (winmdroot.Foundation.HRESULT)(-2144845808);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_NO_EVENT_LOG = (winmdroot.Foundation.HRESULT)(-2144845807);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_ACCESS_DENIED = (winmdroot.Foundation.HRESULT)(-2144845806);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_PROVISIONING_NOT_ALLOWED = (winmdroot.Foundation.HRESULT)(-2144845805);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_PPI_FUNCTION_UNSUPPORTED = (winmdroot.Foundation.HRESULT)(-2144845804);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_OWNERAUTH_NOT_FOUND = (winmdroot.Foundation.HRESULT)(-2144845803);
internal static readonly winmdroot.Foundation.HRESULT TBS_E_PROVISIONING_INCOMPLETE = (winmdroot.Foundation.HRESULT)(-2144845802);
internal const uint TCM_FIRST = 4864U;
/// <summary>Retrieves the image list associated with a tab control. You can send this message explicitly or by using the TabCtrl\_GetImageList macro.</summary>
/// <returns>Returns the handle to the image list if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_GETIMAGELIST = 4866U;
/// <summary>Assigns an image list to a tab control. You can send this message explicitly or by using the TabCtrl\_SetImageList macro.</summary>
/// <returns>Returns the handle to the previous image list, or **NULL** if there is no previous image list.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETIMAGELIST = 4867U;
/// <summary>Retrieves the number of tabs in the tab control. You can send this message explicitly or by using the TabCtrl\_GetItemCount macro.</summary>
/// <returns>Returns the number of items if successful, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-getitemcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_GETITEMCOUNT = 4868U;
/// <summary>Retrieves information about a tab in a tab control. You can send this message explicitly or by using the TabCtrl\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the TCIF\_TEXT flag is set in the **mask** member of the [**TCITEM**](/windows/win32/api/commctrl/ns-commctrl-tcitema) structure, the control may change the **pszText** member of the structure to point to the new text instead of filling the buffer with the requested text. The control may set the **pszText** member to **NULL** to indicate that no text is associated with the item.</remarks>
internal const uint TCM_GETITEMA = 4869U;
/// <summary>Retrieves information about a tab in a tab control. You can send this message explicitly or by using the TabCtrl\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the TCIF\_TEXT flag is set in the **mask** member of the [**TCITEM**](/windows/win32/api/commctrl/ns-commctrl-tcitema) structure, the control may change the **pszText** member of the structure to point to the new text instead of filling the buffer with the requested text. The control may set the **pszText** member to **NULL** to indicate that no text is associated with the item.</remarks>
internal const uint TCM_GETITEMW = 4924U;
/// <summary>Retrieves information about a tab in a tab control. You can send this message explicitly or by using the TabCtrl\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the TCIF\_TEXT flag is set in the **mask** member of the [**TCITEM**](/windows/win32/api/commctrl/ns-commctrl-tcitema) structure, the control may change the **pszText** member of the structure to point to the new text instead of filling the buffer with the requested text. The control may set the **pszText** member to **NULL** to indicate that no text is associated with the item.</remarks>
internal const uint TCM_GETITEM = 4924U;
/// <summary>Sets some or all of a tab's attributes. You can send this message explicitly or by using the TabCtrl\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETITEMA = 4870U;
/// <summary>Sets some or all of a tab's attributes. You can send this message explicitly or by using the TabCtrl\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETITEMW = 4925U;
/// <summary>Sets some or all of a tab's attributes. You can send this message explicitly or by using the TabCtrl\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETITEM = 4925U;
/// <summary>Inserts a new tab in a tab control. You can send this message explicitly or by using the TabCtrl\_InsertItem macro.</summary>
/// <returns>Returns the index of the new tab if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_INSERTITEMA = 4871U;
/// <summary>Inserts a new tab in a tab control. You can send this message explicitly or by using the TabCtrl\_InsertItem macro.</summary>
/// <returns>Returns the index of the new tab if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_INSERTITEMW = 4926U;
/// <summary>Inserts a new tab in a tab control. You can send this message explicitly or by using the TabCtrl\_InsertItem macro.</summary>
/// <returns>Returns the index of the new tab if successful, or -1 otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_INSERTITEM = 4926U;
/// <summary>Removes an item from a tab control. You can send this message explicitly or by using the TabCtrl\_DeleteItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-deleteitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_DELETEITEM = 4872U;
/// <summary>Removes all items from a tab control. You can send this message explicitly or by using the TabCtrl\_DeleteAllItems macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-deleteallitems">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_DELETEALLITEMS = 4873U;
/// <summary>Retrieves the bounding rectangle for a tab in a tab control. You can send this message explicitly or by using the TabCtrl\_GetItemRect macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-getitemrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_GETITEMRECT = 4874U;
/// <summary>Determines the currently selected tab in a tab control. You can send this message explicitly or by using the TabCtrl\_GetCurSel macro.</summary>
/// <returns>Returns the index of the selected tab if successful, or -1 if no tab is selected.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-getcursel">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_GETCURSEL = 4875U;
/// <summary>Selects a tab in a tab control. You can send this message explicitly or by using the TabCtrl\_SetCurSel macro.</summary>
/// <returns>Returns the index of the previously selected tab if successful, or -1 otherwise.</returns>
/// <remarks>A tab control does not send a [TCN\_SELCHANGING](tcn-selchanging.md) or [TCN\_SELCHANGE](tcn-selchange.md) notification code when a tab is selected using this message.</remarks>
internal const uint TCM_SETCURSEL = 4876U;
/// <summary>Determines which tab, if any, is at a specified screen position. You can send this message explicitly or by using the TabCtrl\_HitTest macro.</summary>
/// <returns>Returns the index of the tab, or -1 if no tab is at the specified position.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-hittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_HITTEST = 4877U;
/// <summary>Sets the number of bytes per tab reserved for application-defined data in a tab control. You can send this message explicitly or by using the TabCtrl\_SetItemExtra macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>By default, the number of extra bytes is four. An application that changes the number of extra bytes cannot use the [**TCITEM**](/windows/win32/api/commctrl/ns-commctrl-tcitema) structure to retrieve and set the application-defined data for a tab. Instead, you must define a new structure that consists of the [**TCITEMHEADER**](/windows/win32/api/commctrl/ns-commctrl-tcitemheadera) structure followed by application-defined members. An application should only change the number of extra bytes when a tab control does not contain any tabs.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setitemextra#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETITEMEXTRA = 4878U;
/// <summary>Calculates a tab control's display area given a window rectangle, or calculates the window rectangle that would correspond to a specified display area. You can send this message explicitly or by using the TabCtrl\_AdjustRect macro.</summary>
/// <returns>No return value.</returns>
/// <remarks>This message applies only to tab controls that are at the top. It does not apply to tab controls that are on the sides or bottom.</remarks>
internal const uint TCM_ADJUSTRECT = 4904U;
/// <summary>Sets the width and height of tabs in a fixed-width or owner-drawn tab control. You can send this message explicitly or by using the TabCtrl\_SetItemSize macro.</summary>
/// <returns>Returns the old width and height. The width is in the [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) of the return value, and the height is in the [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)).</returns>
/// <remarks>If the width is set to a value less than the image width set by [**ImageList\_Create**](/windows/desktop/api/Commctrl/nf-commctrl-imagelist_create), the width of the tab is set to the lowest value that is greater than the image width.</remarks>
internal const uint TCM_SETITEMSIZE = 4905U;
/// <summary>Removes an image from a tab control's image list. You can send this message explicitly or by using the TabCtrl\_RemoveImage macro.</summary>
/// <returns>No return value.</returns>
/// <remarks>The tab control updates each tab's image index, so each tab remains associated with the same image as before. If a tab is using the image being removed, the tab will be set to have no image.</remarks>
internal const uint TCM_REMOVEIMAGE = 4906U;
/// <summary>Sets the amount of space (padding) around each tab's icon and label in a tab control. You can send this message explicitly or by using the TabCtrl\_SetPadding macro.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setpadding">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETPADDING = 4907U;
/// <summary>Retrieves the current number of rows of tabs in a tab control. You can send this message explicitly or by using the TabCtrl\_GetRowCount macro.</summary>
/// <returns>Returns the number of rows of tabs.</returns>
/// <remarks>Only tab controls that have the [**TCS\_MULTILINE**](tab-control-styles.md) style can have multiple rows of tabs.</remarks>
internal const uint TCM_GETROWCOUNT = 4908U;
/// <summary>Retrieves the handle to the tooltip control associated with a tab control. You can send this message explicitly or by using the TabCtrl\_GetToolTips macro.</summary>
/// <returns>Returns the handle to the tooltip control if successful, or **NULL** otherwise.</returns>
/// <remarks>A tab control creates a tooltip control if it has the [**TCS\_TOOLTIPS**](tab-control-styles.md) style. You can also assign a tooltip control to a tab control by using the [**TCM\_SETTOOLTIPS**](tcm-settooltips.md) message.</remarks>
internal const uint TCM_GETTOOLTIPS = 4909U;
/// <summary>Assigns a tooltip control to a tab control. You can send this message explicitly or by using the TabCtrl\_SetToolTips macro.</summary>
/// <returns>No return value.</returns>
/// <remarks>You can retrieve the tooltip control associated with a tab control by using the [**TCM\_GETTOOLTIPS**](tcm-gettooltips.md) message.</remarks>
internal const uint TCM_SETTOOLTIPS = 4910U;
/// <summary>Returns the index of the item that has the focus in a tab control. You can send this message explicitly or by using the TabCtrl\_GetCurFocus macro.</summary>
/// <returns>Returns the index of the tab item that has the focus.</returns>
/// <remarks>The item that has the focus may be different than the selected item.</remarks>
internal const uint TCM_GETCURFOCUS = 4911U;
/// <summary>Sets the focus to a specified tab in a tab control. You can send this message explicitly or by using the TabCtrl\_SetCurFocus macro.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>If the tab control has the [**TCS\_BUTTONS**](tab-control-styles.md) style (button mode), the tab with the focus may be different from the selected tab. For example, when a tab is selected, the user can press the arrow keys to set the focus to a different tab without changing the selected tab. In button mode, **TCM\_SETCURFOCUS** sets the input focus to the button associated with the specified tab, but it does not change the selected tab. If the tab control does not have the [**TCS\_BUTTONS**](tab-control-styles.md) style, changing the focus also changes the selected tab. In this case, the tab control sends the [TCN\_SELCHANGING](tcn-selchanging.md) and [TCN\_SELCHANGE](tcn-selchange.md) notification codes to its parent window.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setcurfocus#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETCURFOCUS = 4912U;
/// <summary>Sets the minimum width of items in a tab control. You can send this message explicitly or by using the TabCtrl\_SetMinTabWidth macro.</summary>
/// <returns>Returns an INT value that represents the previous minimum tab width.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setmintabwidth">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETMINTABWIDTH = 4913U;
/// <summary>Resets items in a tab control, clearing any that were set to the TCIS\_BUTTONPRESSED state. You can send this message explicitly or by using the TabCtrl\_DeselectAll macro.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>This message is only meaningful if the [**TCS\_BUTTONS**](tab-control-styles.md) style flag has been set.</remarks>
internal const uint TCM_DESELECTALL = 4914U;
/// <summary>Sets the highlight state of a tab item. You can send this message explicitly or by using the TabCtrl\_HighlightItem macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>In Comctl32.dll version 6.0, this message has no visible effect when a theme is active.</remarks>
internal const uint TCM_HIGHLIGHTITEM = 4915U;
/// <summary>Sets the extended styles that the tab control will use. You can send this message explicitly or by using the TabCtrl\_SetExtendedStyle macro.</summary>
/// <returns>Returns a **DWORD** value that contains the previous tab control extended styles.</returns>
/// <remarks>
/// <para>The *wParam* parameter allows you to modify one or more extended styles without having to retrieve the existing styles first. For example, if you pass [**TCS\_EX\_FLATSEPARATORS**](tab-control-extended-styles.md) for *wParam* and 0 for *lParam*, the **TCS\_EX\_FLATSEPARATORS** style will be cleared, but all other styles will remain the same. For backward compatibility reasons, the [**TabCtrl\_SetExtendedStyle**](/windows/desktop/api/Commctrl/nf-commctrl-tabctrl_setextendedstyle) macro has not been updated to use *dwExMask*.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-setextendedstyle#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_SETEXTENDEDSTYLE = 4916U;
/// <summary>Retrieves the extended styles that are currently in use for the tab control. You can send this message explicitly or by using the TabCtrl\_GetExtendedStyle macro.</summary>
/// <returns>Returns a **DWORD** value that represents the extended styles currently in use for the tab control. This value is a combination of tab control [extended styles](tab-control-extended-styles.md).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcm-getextendedstyle">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCM_GETEXTENDEDSTYLE = 4917U;
/// <summary>TCM_SETUNICODEFORMAT message - Sets the Unicode character format flag for the control.</summary>
/// <returns>Returns the previous Unicode format flag for the control.</returns>
/// <remarks>See the remarks for [**CCM\_SETUNICODEFORMAT**](ccm-setunicodeformat.md) for a discussion of this message.</remarks>
internal const uint TCM_SETUNICODEFORMAT = 8197U;
/// <summary>Retrieves the Unicode character format flag for the control. You can send this message explicitly or use the TabCtrl\_GetUnicodeFormat macro.</summary>
/// <returns>Returns the Unicode format flag for the control. If this value is nonzero, the control is using Unicode characters. If this value is zero, the control is using ANSI characters.</returns>
/// <remarks>See the remarks for [**CCM\_GETUNICODEFORMAT**](ccm-getunicodeformat.md) for a discussion of this message.</remarks>
internal const uint TCM_GETUNICODEFORMAT = 8198U;
internal const uint TCN_FIRST = 4294966746U;
internal const uint TCN_LAST = 4294966716U;
/// <summary>Notifies a tab control's parent window that a key has been pressed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcn-keydown">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCN_KEYDOWN = 4294966746U;
/// <summary>Notifies a tab control's parent window that the currently selected tab has changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>To determine the currently selected tab, use the [**TabCtrl\_GetCurSel**](/windows/desktop/api/Commctrl/nf-commctrl-tabctrl_getcursel) macro.</remarks>
internal const uint TCN_SELCHANGE = 4294966745U;
/// <summary>Notifies a tab control's parent window that the currently selected tab is about to change. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to prevent the selection from changing, or **FALSE** to allow the selection to change.</returns>
/// <remarks>To determine the currently selected tab, use the [**TabCtrl\_GetCurSel**](/windows/desktop/api/Commctrl/nf-commctrl-tabctrl_getcursel) macro.</remarks>
internal const uint TCN_SELCHANGING = 4294966744U;
/// <summary>Sent by a tab control when it has the TCS\_EX\_REGISTERDROP extended style and an object is dragged over a tab item in the control. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The application processing this notification code must return zero.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcn-getobject">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCN_GETOBJECT = 4294966743U;
/// <summary>Notifies a tab control's parent window that the button focus has changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tcn-focuschange">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TCN_FOCUSCHANGE = 4294966742U;
internal const uint TCS_SCROLLOPPOSITE = 1U;
internal const uint TCS_BOTTOM = 2U;
internal const uint TCS_RIGHT = 2U;
internal const uint TCS_MULTISELECT = 4U;
internal const uint TCS_FLATBUTTONS = 8U;
internal const uint TCS_FORCEICONLEFT = 16U;
internal const uint TCS_FORCELABELLEFT = 32U;
internal const uint TCS_HOTTRACK = 64U;
internal const uint TCS_VERTICAL = 128U;
internal const uint TCS_TABS = 0U;
internal const uint TCS_BUTTONS = 256U;
internal const uint TCS_SINGLELINE = 0U;
internal const uint TCS_MULTILINE = 512U;
internal const uint TCS_RIGHTJUSTIFY = 0U;
internal const uint TCS_FIXEDWIDTH = 1024U;
internal const uint TCS_RAGGEDRIGHT = 2048U;
internal const uint TCS_FOCUSONBUTTONDOWN = 4096U;
internal const uint TCS_OWNERDRAWFIXED = 8192U;
internal const uint TCS_TOOLTIPS = 16384U;
internal const uint TCS_FOCUSNEVER = 32768U;
internal const uint TCS_EX_FLATSEPARATORS = 1U;
internal const uint TCS_EX_REGISTERDROP = 2U;
internal const string TOOLTIPS_CLASS = "tooltips_class32";
internal const string TRACKBAR_CLASS = "msctls_trackbar32";
internal const uint TTDT_AUTOMATIC = 0U;
internal const uint TTDT_RESHOW = 1U;
internal const uint TTDT_AUTOPOP = 2U;
internal const uint TTDT_INITIAL = 3U;
/// <summary>Activates or deactivates a tooltip control.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-activate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_ACTIVATE = 1025U;
/// <summary>Sets the initial, pop-up, and reshow durations for a tooltip control.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para>The default delay times are based on the double-click time. For the default double-click time of 500 ms, the initial, autopop, and reshow delay times are 500ms, 5000ms, and 100ms respectively. The following code fragment uses the [**GetDoubleClickTime**](/windows/desktop/api/winuser/nf-winuser-getdoubleclicktime) function to determine the three delay times for any system.</para>
/// <para></para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-setdelaytime#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_SETDELAYTIME = 1027U;
/// <summary>Registers a tool with a tooltip control.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>Although the name of the message implicitly indicates the "addition of a tool", it must be made clear that this message merely records a set of specific settings for what is called "a tool", however a ToolTip can be displayed even when there is no "tool" itself (a visual control with a handle). For this reason, this message should be interpreted as "add a set of specific settings for the display of a ToolTip ". A ToolTip window can be displayed in several different ways and each of these ways can be registered via the TTM_ADDTOOL message.</remarks>
internal const uint TTM_ADDTOOLA = 1028U;
/// <summary>Registers a tool with a tooltip control.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>Although the name of the message implicitly indicates the "addition of a tool", it must be made clear that this message merely records a set of specific settings for what is called "a tool", however a ToolTip can be displayed even when there is no "tool" itself (a visual control with a handle). For this reason, this message should be interpreted as "add a set of specific settings for the display of a ToolTip ". A ToolTip window can be displayed in several different ways and each of these ways can be registered via the TTM_ADDTOOL message.</remarks>
internal const uint TTM_ADDTOOLW = 1074U;
/// <summary>Removes a tool from a tooltip control.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-deltool">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_DELTOOLA = 1029U;
/// <summary>Removes a tool from a tooltip control.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-deltool">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_DELTOOLW = 1075U;
/// <summary>Sets a new bounding rectangle for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-newtoolrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_NEWTOOLRECTA = 1030U;
/// <summary>Sets a new bounding rectangle for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-newtoolrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_NEWTOOLRECTW = 1076U;
/// <summary>Passes a mouse message to a tooltip control for processing.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>A tooltip control processes only the following messages passed to it by the **TTM\_RELAYEVENT** message: - WM\_LBUTTONDOWN - WM\_LBUTTONUP - WM\_MBUTTONDOWN - WM\_MBUTTONUP - WM\_MOUSEMOVE - WM\_NCMOUSEMOVE - WM\_RBUTTONDOWN - WM\_RBUTTONUP All other messages are ignored.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-relayevent#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_RELAYEVENT = 1031U;
/// <summary>Retrieves the information that a tooltip control maintains about a tool.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the tooltip control includes the tool, the [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure receives information about the tool.</remarks>
internal const uint TTM_GETTOOLINFOA = 1032U;
/// <summary>Retrieves the information that a tooltip control maintains about a tool.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the tooltip control includes the tool, the [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure receives information about the tool.</remarks>
internal const uint TTM_GETTOOLINFOW = 1077U;
/// <summary>Sets the information that a tooltip control maintains for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>Some internal properties of a tool are established when the tool is created, and are not recomputed when a **TTM\_SETTOOLINFO** message is sent. If you simply assign values to a [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure and pass it to the tooltip control with a **TTM\_SETTOOLINFO** message, these properties may be lost. Instead, your application should first request the tool's current **TOOLINFO** structure by sending the tooltip control a [**TTM\_GETTOOLINFO**](ttm-gettoolinfo.md) message. Then, modify the members of this structure as needed and pass it back to the tooltip control with **TTM\_SETTOOLINFO**. When calling **TTM\_SETTOOLINFO**, the string pointed to by the **lpszText** member of the [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure must not exceed 80 **TCHARs** in length, including the terminating **NULL**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-settoolinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_SETTOOLINFOA = 1033U;
/// <summary>Sets the information that a tooltip control maintains for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>Some internal properties of a tool are established when the tool is created, and are not recomputed when a **TTM\_SETTOOLINFO** message is sent. If you simply assign values to a [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure and pass it to the tooltip control with a **TTM\_SETTOOLINFO** message, these properties may be lost. Instead, your application should first request the tool's current **TOOLINFO** structure by sending the tooltip control a [**TTM\_GETTOOLINFO**](ttm-gettoolinfo.md) message. Then, modify the members of this structure as needed and pass it back to the tooltip control with **TTM\_SETTOOLINFO**. When calling **TTM\_SETTOOLINFO**, the string pointed to by the **lpszText** member of the [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure must not exceed 80 **TCHARs** in length, including the terminating **NULL**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-settoolinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_SETTOOLINFOW = 1078U;
/// <summary>Tests a point to determine whether it is within the bounding rectangle of the specified tool and, if it is, retrieves information about the tool.</summary>
/// <returns>Returns **TRUE** if the tool occupies the specified point, or **FALSE** otherwise.</returns>
/// <remarks>This message must be sent when the tool has the TTF\_TRACK flag set. For more information on this flag, see [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa). TTM\_HITTEST will fail if TTF\_TRACK is not set, regardless if the hit point is in the tools rectangle or not.</remarks>
internal const uint TTM_HITTESTA = 1034U;
/// <summary>Tests a point to determine whether it is within the bounding rectangle of the specified tool and, if it is, retrieves information about the tool.</summary>
/// <returns>Returns **TRUE** if the tool occupies the specified point, or **FALSE** otherwise.</returns>
/// <remarks>This message must be sent when the tool has the TTF\_TRACK flag set. For more information on this flag, see [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa). TTM\_HITTEST will fail if TTF\_TRACK is not set, regardless if the hit point is in the tools rectangle or not.</remarks>
internal const uint TTM_HITTESTW = 1079U;
/// <summary>Retrieves the information a tooltip control maintains about a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-gettext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETTEXTA = 1035U;
/// <summary>Retrieves the information a tooltip control maintains about a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-gettext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETTEXTW = 1080U;
/// <summary>Sets the tooltip text for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-updatetiptext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_UPDATETIPTEXTA = 1036U;
/// <summary>Sets the tooltip text for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-updatetiptext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_UPDATETIPTEXTW = 1081U;
/// <summary>Retrieves a count of the tools maintained by a tooltip control.</summary>
/// <returns>Returns a count of tools.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-gettoolcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETTOOLCOUNT = 1037U;
/// <summary>Retrieves the information that a tooltip control maintains about the current tool \ 8212;that is, the tool for which the tooltip is currently displaying text.</summary>
/// <returns>Returns **FALSE** whether or not a tool was enumerated.</returns>
/// <remarks>**Security Warning:** Using this message might compromise the security of your program. This message does not provide a way for the message receiver to know the size of the buffer or to specify the size of the buffer. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing.</remarks>
internal const uint TTM_ENUMTOOLSA = 1038U;
/// <summary>Retrieves the information that a tooltip control maintains about the current tool \ 8212;that is, the tool for which the tooltip is currently displaying text.</summary>
/// <returns>Returns **FALSE** whether or not a tool was enumerated.</returns>
/// <remarks>**Security Warning:** Using this message might compromise the security of your program. This message does not provide a way for the message receiver to know the size of the buffer or to specify the size of the buffer. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing.</remarks>
internal const uint TTM_ENUMTOOLSW = 1082U;
/// <summary>Retrieves the information for the current tool in a tooltip control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. If *lParam* is **NULL**, returns nonzero if a current tool exists, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-getcurrenttool">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETCURRENTTOOLA = 1039U;
/// <summary>Retrieves the information for the current tool in a tooltip control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. If *lParam* is **NULL**, returns nonzero if a current tool exists, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-getcurrenttool">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETCURRENTTOOLW = 1083U;
/// <summary>Allows a subclass procedure to cause a tooltip to display text for a window other than the one beneath the mouse cursor.</summary>
/// <returns>The return value is the handle to the window that contains the point, or **NULL** if no window exists at the specified point.</returns>
/// <remarks>This message is intended to be processed by an application that subclasses a tooltip. It is not intended to be sent by an application. A tooltip sends this message to itself before displaying the text for a window. By changing the coordinates of the point specified by *lParam*, the subclass procedure can cause the tooltip to display text for a window other than the one beneath the mouse cursor.</remarks>
internal const uint TTM_WINDOWFROMPOINT = 1040U;
/// <summary>Activates or deactivates a tracking tooltip.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-trackactivate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_TRACKACTIVATE = 1041U;
/// <summary>Sets the position of a tracking tooltip.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>The tooltip control chooses where to display the tooltip window based on the coordinates you provide with this message. This causes the tooltip window to appear beside the tool to which it corresponds. To have tooltip windows displayed at specific coordinates, include the TTF\_ABSOLUTE flag in the **uFlags** member of the [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure when adding the tool.</remarks>
internal const uint TTM_TRACKPOSITION = 1042U;
/// <summary>Sets the background color in a tooltip window.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>When visual styles are enabled, this message has no effect.</remarks>
internal const uint TTM_SETTIPBKCOLOR = 1043U;
/// <summary>Sets the text color in a tooltip window.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>When visual styles are enabled, this message has no effect.</remarks>
internal const uint TTM_SETTIPTEXTCOLOR = 1044U;
/// <summary>Retrieves the initial, pop-up, and reshow durations currently set for a tooltip control.</summary>
/// <returns>Returns and INT value with the specified duration in milliseconds.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-getdelaytime">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETDELAYTIME = 1045U;
/// <summary>Retrieves the background color in a tooltip window.</summary>
/// <returns>Returns a **COLORREF** value that represents the background color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-gettipbkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETTIPBKCOLOR = 1046U;
/// <summary>Retrieves the text color in a tooltip window.</summary>
/// <returns>Returns a **COLORREF** value that represents the text color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-gettiptextcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETTIPTEXTCOLOR = 1047U;
/// <summary>Sets the maximum width for a tooltip window.</summary>
/// <returns>Returns the previous maximum tooltip width.</returns>
/// <remarks>The maximum width value does not indicate a tooltip window's actual width. Rather, if a tooltip string exceeds the maximum width, the control breaks the text into multiple lines, using spaces to determine line breaks. If the text cannot be segmented into multiple lines, it is displayed on a single line, which may exceed the maximum tooltip width.</remarks>
internal const uint TTM_SETMAXTIPWIDTH = 1048U;
/// <summary>Retrieves the maximum width for a tooltip window.</summary>
/// <returns>Returns an **INT** value that represents the maximum tooltip width, in pixels. If no maximum width was set previously, the message returns -1.</returns>
/// <remarks>The maximum tooltip width value does not indicate a tooltip window's actual width. Rather, if a tooltip string exceeds the maximum width, the control breaks the text into multiple lines, using spaces to determine line breaks. If the text cannot be segmented into multiple lines, it will be displayed on a single line. The length of this line may exceed the maximum tooltip width.</remarks>
internal const uint TTM_GETMAXTIPWIDTH = 1049U;
/// <summary>Sets the top, left, bottom, and right margins for a tooltip window. A margin is the distance, in pixels, between the tooltip window border and the text contained within the tooltip window.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>This message has no effect when the application runs on Windows Vista and visual styles are enabled for the tooltip. You can disable visual styles for the tooltip by using [**SetWindowTheme**](/windows/desktop/api/Uxtheme/nf-uxtheme-setwindowtheme).</remarks>
internal const uint TTM_SETMARGIN = 1050U;
/// <summary>Retrieves the top, left, bottom, and right margins set for a tooltip window. A margin is the distance, in pixels, between the tooltip window border and the text contained within the tooltip window.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>All four margins default to zero when you create the tooltip control.</remarks>
internal const uint TTM_GETMARGIN = 1051U;
/// <summary>Removes a displayed tooltip window from view.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-pop">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_POP = 1052U;
/// <summary>Forces the current tooltip to be redrawn.</summary>
/// <returns>The return value for this message is not used.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-update">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_UPDATE = 1053U;
/// <summary>Returns the width and height of a tooltip control.</summary>
/// <returns>Returns the width of the tooltip in the low word and the height in the high word if successful. Otherwise, it returns **FALSE**.</returns>
/// <remarks>If the TTF\_TRACK and TTF\_ABSOLUTE flags are set in the **uFlags** member of the tooltip [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure, this message can be used to help position the tooltip accurately.</remarks>
internal const uint TTM_GETBUBBLESIZE = 1054U;
/// <summary>Calculates a tooltip control's text display rectangle from its window rectangle, or the tooltip window rectangle needed to display a specified text display rectangle.</summary>
/// <returns>Returns a nonzero value if the rectangle is successfully adjusted, and returns zero if an error occurs.</returns>
/// <remarks>
/// <para>This message is particularly useful when you want to use a tooltip control to display the full text of a string that is usually truncated. It is commonly used with listview and treeview controls. You typically send this message in response to a [TTN\_SHOW](ttn-show.md) notification code so that you can position the tooltip control properly. The tooltip window rectangle is somewhat larger than the text display rectangle that bounds the tooltip string. The window origin is also offset up and to the left from the origin of the text display rectangle. To position the text display rectangle, you must calculate the corresponding window rectangle and use that rectangle to position the tooltip. **TTM\_ADJUSTRECT** handles this calculation for you. If you set *wParam* to **TRUE**, **TTM\_ADJUSTRECT** takes the size and position of the desired tooltip text display rectangle, and passes back the size and position of the tooltip window needed to display the text in the specified position. If you set *wParam* to **FALSE**, you can specify a tooltip window rectangle and **TTM\_ADJUSTRECT** will return the size and position of its text rectangle. The following code fragment illustrates the use of the **TTM\_ADJUSTRECT** message to position a tooltip control to display the full text of a control's string in place of a truncated string. The application-defined **GetMyItemRect** function returns the text rectangle that will be needed to display the tooltip text directly over the truncated string. The details of how this function is implemented will depend on the particular control. **TTM\_ADJUSTRECT** is used to send this text rectangle to the tooltip control. It returns an appropriately sized and positioned window rectangle that is then used to position the tooltip window.</para>
/// <para></para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-adjustrect#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_ADJUSTRECT = 1055U;
/// <summary>Adds a standard icon and title string to a tooltip.</summary>
/// <returns>Returns **TRUE** if successful, **FALSE** if not.</returns>
/// <remarks>
/// <para>The title of a tooltip appears above the text, in a different font. It is not sufficient to have a title; the tooltip must have text as well, or it is not displayed. When *wParam* contains an **HICON**, a copy of the icon is created by the tooltip window. When calling **TTM\_SETTITLE**, the string pointed to by *lParam* must not exceed 100 **TCHARs** in length, including the terminating **NULL**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-settitle#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_SETTITLEA = 1056U;
/// <summary>Adds a standard icon and title string to a tooltip.</summary>
/// <returns>Returns **TRUE** if successful, **FALSE** if not.</returns>
/// <remarks>
/// <para>The title of a tooltip appears above the text, in a different font. It is not sufficient to have a title; the tooltip must have text as well, or it is not displayed. When *wParam* contains an **HICON**, a copy of the icon is created by the tooltip window. When calling **TTM\_SETTITLE**, the string pointed to by *lParam* must not exceed 100 **TCHARs** in length, including the terminating **NULL**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-settitle#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_SETTITLEW = 1057U;
/// <summary>Causes the tooltip to display at the coordinates of the last mouse message.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-popup#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_POPUP = 1058U;
/// <summary>Retrieve information concerning the title of a tooltip control.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-gettitle#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETTITLE = 1059U;
/// <summary>Registers a tool with a tooltip control.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>Although the name of the message implicitly indicates the "addition of a tool", it must be made clear that this message merely records a set of specific settings for what is called "a tool", however a ToolTip can be displayed even when there is no "tool" itself (a visual control with a handle). For this reason, this message should be interpreted as "add a set of specific settings for the display of a ToolTip ". A ToolTip window can be displayed in several different ways and each of these ways can be registered via the TTM_ADDTOOL message.</remarks>
internal const uint TTM_ADDTOOL = 1074U;
/// <summary>Removes a tool from a tooltip control.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-deltool">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_DELTOOL = 1075U;
/// <summary>Sets a new bounding rectangle for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-newtoolrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_NEWTOOLRECT = 1076U;
/// <summary>Retrieves the information that a tooltip control maintains about a tool.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>If the tooltip control includes the tool, the [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure receives information about the tool.</remarks>
internal const uint TTM_GETTOOLINFO = 1077U;
/// <summary>Sets the information that a tooltip control maintains for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>Some internal properties of a tool are established when the tool is created, and are not recomputed when a **TTM\_SETTOOLINFO** message is sent. If you simply assign values to a [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure and pass it to the tooltip control with a **TTM\_SETTOOLINFO** message, these properties may be lost. Instead, your application should first request the tool's current **TOOLINFO** structure by sending the tooltip control a [**TTM\_GETTOOLINFO**](ttm-gettoolinfo.md) message. Then, modify the members of this structure as needed and pass it back to the tooltip control with **TTM\_SETTOOLINFO**. When calling **TTM\_SETTOOLINFO**, the string pointed to by the **lpszText** member of the [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa) structure must not exceed 80 **TCHARs** in length, including the terminating **NULL**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-settoolinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_SETTOOLINFO = 1078U;
/// <summary>Tests a point to determine whether it is within the bounding rectangle of the specified tool and, if it is, retrieves information about the tool.</summary>
/// <returns>Returns **TRUE** if the tool occupies the specified point, or **FALSE** otherwise.</returns>
/// <remarks>This message must be sent when the tool has the TTF\_TRACK flag set. For more information on this flag, see [**TOOLINFO**](/windows/win32/api/commctrl/ns-commctrl-tttoolinfoa). TTM\_HITTEST will fail if TTF\_TRACK is not set, regardless if the hit point is in the tools rectangle or not.</remarks>
internal const uint TTM_HITTEST = 1079U;
/// <summary>Retrieves the information a tooltip control maintains about a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-gettext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETTEXT = 1080U;
/// <summary>Sets the tooltip text for a tool.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-updatetiptext">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_UPDATETIPTEXT = 1081U;
/// <summary>Retrieves the information that a tooltip control maintains about the current tool \ 8212;that is, the tool for which the tooltip is currently displaying text.</summary>
/// <returns>Returns **FALSE** whether or not a tool was enumerated.</returns>
/// <remarks>**Security Warning:** Using this message might compromise the security of your program. This message does not provide a way for the message receiver to know the size of the buffer or to specify the size of the buffer. You should review the [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing.</remarks>
internal const uint TTM_ENUMTOOLS = 1082U;
/// <summary>Retrieves the information for the current tool in a tooltip control.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise. If *lParam* is **NULL**, returns nonzero if a current tool exists, or zero otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-getcurrenttool">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_GETCURRENTTOOL = 1083U;
/// <summary>Adds a standard icon and title string to a tooltip.</summary>
/// <returns>Returns **TRUE** if successful, **FALSE** if not.</returns>
/// <remarks>
/// <para>The title of a tooltip appears above the text, in a different font. It is not sufficient to have a title; the tooltip must have text as well, or it is not displayed. When *wParam* contains an **HICON**, a copy of the icon is created by the tooltip window. When calling **TTM\_SETTITLE**, the string pointed to by *lParam* must not exceed 100 **TCHARs** in length, including the terminating **NULL**.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-settitle#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_SETTITLE = 1057U;
/// <summary>Sets the visual style of a tooltip control.</summary>
/// <returns>The return value is not used.</returns>
/// <remarks>
/// <para>> [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttm-setwindowtheme#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTM_SETWINDOWTHEME = 8203U;
internal const uint TTN_FIRST = 4294966776U;
internal const uint TTN_LAST = 4294966747U;
/// <summary>Sent by a tooltip control to retrieve information needed to display a tooltip window. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>Fill the structure's appropriate members to return the requested information to the tooltip control. If your message handler sets the **uFlags** member of the [**NMTTDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmttdispinfoa) structure to TTF\_DI\_SETITEM, the tooltip control stores the information and will not request it again.</remarks>
internal const uint TTN_GETDISPINFOA = 4294966776U;
/// <summary>Sent by a tooltip control to retrieve information needed to display a tooltip window. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>Fill the structure's appropriate members to return the requested information to the tooltip control. If your message handler sets the **uFlags** member of the [**NMTTDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmttdispinfoa) structure to TTF\_DI\_SETITEM, the tooltip control stores the information and will not request it again.</remarks>
internal const uint TTN_GETDISPINFOW = 4294966766U;
/// <summary>Notifies the owner window that a tooltip control is about to be displayed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>[Version 4.70](common-control-versions.md). To display the tooltip in its default location, return zero. To customize the tooltip position, reposition the tooltip window with the [**SetWindowPos**](/windows/desktop/api/winuser/nf-winuser-setwindowpos) function and return **TRUE**. > [!Note] > For versions earlier than 4.70, there is no return value.</para>
/// </returns>
/// <remarks>A tooltip window rectangle is somewhat larger than its text display rectangle, and its origin is offset up and to the left. If you need to accurately position the text display rectangle of a tooltip, the [**TTM\_ADJUSTRECT**](ttm-adjustrect.md) message converts a text display rectangle into the corresponding tooltip window rectangle and vice versa.</remarks>
internal const uint TTN_SHOW = 4294966775U;
/// <summary>Notifies the owner window that a tooltip is about to be hidden. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttn-pop">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTN_POP = 4294966774U;
/// <summary>Sent when a text link inside a balloon tooltip is clicked. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>This notification code has no parameters.</para>
/// <para>Return value not used.</para>
/// </returns>
/// <remarks>
/// <para>Following is an example of when this notification is sent. Assume that your balloon tooltip contains the following text, "This is a <A>link</A>". When "link" is clicked, the tooltip control sends a TTN\_LINKCLICK notification code. > [!Note] > To use this notification code, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/ttn-linkclick#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TTN_LINKCLICK = 4294966773U;
/// <summary>Sent by a tooltip control to retrieve information needed to display a tooltip window. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>Fill the structure's appropriate members to return the requested information to the tooltip control. If your message handler sets the **uFlags** member of the [**NMTTDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmttdispinfoa) structure to TTF\_DI\_SETITEM, the tooltip control stores the information and will not request it again.</remarks>
internal const uint TTN_GETDISPINFO = 4294966766U;
/// <summary>Sent by a tooltip control to retrieve information needed to display a tooltip window. This notification code is identical to TTN\_GETDISPINFO. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>Fill the structure's appropriate members to return the requested information to the tooltip control. If your message handler sets the **uFlags** member of the [**NMTTDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmttdispinfoa) structure to TTF\_DI\_SETITEM, the tooltip control stores the information and will not request it again.</remarks>
internal const uint TTN_NEEDTEXT = 4294966766U;
/// <summary>Sent by a tooltip control to retrieve information needed to display a tooltip window. This notification code is identical to TTN\_GETDISPINFO. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>Fill the structure's appropriate members to return the requested information to the tooltip control. If your message handler sets the **uFlags** member of the [**NMTTDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmttdispinfoa) structure to TTF\_DI\_SETITEM, the tooltip control stores the information and will not request it again.</remarks>
internal const uint TTN_NEEDTEXTA = 4294966776U;
/// <summary>Sent by a tooltip control to retrieve information needed to display a tooltip window. This notification code is identical to TTN\_GETDISPINFO. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value for this notification is not used.</returns>
/// <remarks>Fill the structure's appropriate members to return the requested information to the tooltip control. If your message handler sets the **uFlags** member of the [**NMTTDISPINFO**](/windows/win32/api/commctrl/ns-commctrl-nmttdispinfoa) structure to TTF\_DI\_SETITEM, the tooltip control stores the information and will not request it again.</remarks>
internal const uint TTN_NEEDTEXTW = 4294966766U;
internal const uint TTS_ALWAYSTIP = 1U;
internal const uint TTS_NOPREFIX = 2U;
internal const uint TTS_NOANIMATE = 16U;
internal const uint TTS_NOFADE = 32U;
internal const uint TTS_BALLOON = 64U;
internal const uint TTS_CLOSE = 128U;
internal const uint TTS_USEVISUALSTYLE = 256U;
/// <summary>Retrieves the topmost or very first item of the tree-view control. You can use the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-treeview_getroot">TreeView_GetRoot</a> macro to send this message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVGN_ROOT = 0U;
/// <summary>Retrieves the next sibling item. You can use the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-treeview_getnextsibling">TreeView_GetNextSibling</a> macro to send this message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVGN_NEXT = 1U;
/// <summary>Retrieves the previous sibling item. You can use the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-treeview_getprevsibling">TreeView_GetPrevSibling</a> macro to send this message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVGN_PREVIOUS = 2U;
/// <summary>Retrieves the parent of the specified item. You can use the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-treeview_getparent">TreeView_GetParent</a> macro to send this message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVGN_PARENT = 3U;
/// <summary>
/// <para>Retrieves the first child item of the item specified by the <i>hitem</i> parameter. You can use the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-treeview_getchild">TreeView_GetChild</a> macro to send this message.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem#">Read more on docs.microsoft.com</see>.</para>
/// </summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVGN_CHILD = 4U;
/// <summary>Documentation varies per use. Refer to each: <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">TreeView_GetNextItem</see>, <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_select">TreeView_Select</see>.</summary>
internal const uint TVGN_FIRSTVISIBLE = 5U;
/// <summary>Retrieves the next visible item that follows the specified item. The specified item must be visible. Use the <a href="https://docs.microsoft.com/windows/desktop/Controls/tvm-getitemrect">TVM_GETITEMRECT</a> message to determine whether an item is visible. You can use the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-treeview_getnextvisible">TreeView_GetNextVisible</a> macro to send this message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVGN_NEXTVISIBLE = 6U;
/// <summary>Retrieves the first visible item that precedes the specified item. The specified item must be visible. Use the <a href="https://docs.microsoft.com/windows/desktop/Controls/tvm-getitemrect">TVM_GETITEMRECT</a> message to determine whether an item is visible. You can use the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-treeview_getprevvisible">TreeView_GetPrevVisible</a> macro to send this message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVGN_PREVIOUSVISIBLE = 7U;
/// <summary>Documentation varies per use. Refer to each: <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">TreeView_GetNextItem</see>, <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_select">TreeView_Select</see>.</summary>
internal const uint TVGN_DROPHILITE = 8U;
/// <summary>Documentation varies per use. Refer to each: <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">TreeView_GetNextItem</see>, <see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_select">TreeView_Select</see>.</summary>
internal const uint TVGN_CARET = 9U;
internal const uint TVGN_LASTVISIBLE = 10U;
/// <summary><b>Windows Vista and later.</b> Retrieves the next selected item. You can use the <a href="https://docs.microsoft.com/windows/desktop/api/commctrl/nf-commctrl-treeview_getnextselected">TreeView_GetNextSelected</a> macro to send this message.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getnextitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVGN_NEXTSELECTED = 11U;
/// <summary>Inserts a new item in a tree-view control. You can send this message explicitly or by using the TreeView\_InsertItem macro.</summary>
/// <returns>Returns the **HTREEITEM** handle to the new item if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_INSERTITEMA = 4352U;
/// <summary>Inserts a new item in a tree-view control. You can send this message explicitly or by using the TreeView\_InsertItem macro.</summary>
/// <returns>Returns the **HTREEITEM** handle to the new item if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_INSERTITEMW = 4402U;
/// <summary>Inserts a new item in a tree-view control. You can send this message explicitly or by using the TreeView\_InsertItem macro.</summary>
/// <returns>Returns the **HTREEITEM** handle to the new item if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-insertitem">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_INSERTITEM = 4402U;
/// <summary>Removes an item and all its children from a tree-view control. You can send this message explicitly or by using the TreeView\_DeleteItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>It is not safe to delete items in response to a notification such as [TVN\_SELCHANGING](tvn-selchanging.md). Once an item is deleted, its handle is invalid and cannot be used. The parent window receives a [TVN\_DELETEITEM](tvn-deleteitem.md) notification code when each item is removed. If the item label is being edited, the edit operation is canceled and the parent window receives the [TVN\_ENDLABELEDIT](tvn-endlabeledit.md) notification code. If you delete all items in a tree-view control that has the [**TVS\_NOSCROLL**](tree-view-control-window-styles.md) style, items subsequently added may not display properly. For more information, see [**TreeView\_DeleteAllItems**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_deleteallitems).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-deleteitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_DELETEITEM = 4353U;
/// <summary>The TVM\_EXPAND message expands or collapses the list of child items associated with the specified parent item, if any. You can send this message explicitly or by using the TreeView\_Expand macro.</summary>
/// <returns>Returns nonzero if the operation was successful, or zero otherwise.</returns>
/// <remarks>
/// <para>Expanding a node that is already expanded is considered a successful operation and [**SendMessage**](/windows/desktop/api/winuser/nf-winuser-sendmessage) returns a nonzero value. Collapsing a node returns zero if the node is already collapsed; otherwise it returns nonzero. Attempting to expand or collapse a node that has no children is considered a failure and **SendMessage** returns zero. When an item is first expanded by a **TVM\_EXPAND** message, the action generates [TVN\_ITEMEXPANDING](tvn-itemexpanding.md) and [TVN\_ITEMEXPANDED](tvn-itemexpanded.md) notification codes and the item's [**TVIS\_EXPANDEDONCE**](tree-view-control-item-states.md) state flag is set. As long as this state flag remains set, subsequent **TVM\_EXPAND** messages do not generate TVN\_ITEMEXPANDING or TVN\_ITEMEXPANDED notifications. To reset the **TVIS\_EXPANDEDONCE** state flag, you must send a **TVM\_EXPAND** message with the TVE\_COLLAPSE and TVE\_COLLAPSERESET flags set. Attempting to explicitly set **TVIS\_EXPANDEDONCE** will result in unpredictable behavior. The expand operation may fail if the owner of the treeview control denies the operation in response to a [TVN\_ITEMEXPANDING](tvn-itemexpanding.md) notification.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-expand#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_EXPAND = 4354U;
/// <summary>Retrieves the bounding rectangle for a tree-view item and indicates whether the item is visible. You can send this message explicitly or by using the TreeView\_GetItemRect macro.</summary>
/// <returns>If the item is visible and the bounding rectangle was successfully retrieved, the return value is **TRUE**. Otherwise, the message returns **FALSE** and does not retrieve the bounding rectangle.</returns>
/// <remarks>
/// <para>When sending this message, the *lParam* parameter contains the handle of the item that the rectangle is being retrieved for. The handle is placed in *lParam* as shown in the following example:</para>
/// <para></para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getitemrect#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETITEMRECT = 4356U;
/// <summary>Retrieves a count of the items in a tree-view control. You can send this message explicitly or by using the TreeView\_GetCount macro.</summary>
/// <returns>Returns the count of items.</returns>
/// <remarks>The node count returned by [**TreeView\_GetCount**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getcount) is limited to integer values. If you add a node beyond 32767 the macro returns a negative value. After adding 65536 nodes the count returns to zero. When this occurs, the tree-view control appears empty with no scrollbars.</remarks>
internal const uint TVM_GETCOUNT = 4357U;
/// <summary>Retrieves the amount, in pixels, that child items are indented relative to their parent items. You can send this message explicitly or by using the TreeView\_GetIndent macro.</summary>
/// <returns>Returns the amount of indentation.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getindent">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETINDENT = 4358U;
/// <summary>Sets the width of indentation for a tree-view control and redraws the control to reflect the new width. You can send this message explicitly or by using the TreeView\_SetIndent macro.</summary>
/// <returns>No return value.</returns>
/// <remarks>The system-defined minimum indent value is typically five pixels, but it is not fixed. To retrieve the exact value of the minimum indent on a particular system, send a **TVM\_SETINDENT** message with *wParam* set to zero. Then send a [**TVM\_GETINDENT**](tvm-getindent.md) message to retrieve the minimum indent value.</remarks>
internal const uint TVM_SETINDENT = 4359U;
/// <summary>Retrieves the handle to the normal or state image list associated with a tree-view control. You can send this message explicitly or by using the TreeView\_GetImageList macro.</summary>
/// <returns>Returns an HIMAGELIST handle to the specified image list.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETIMAGELIST = 4360U;
/// <summary>Sets the normal or state image list for a tree-view control and redraws the control using the new images. You can send this message explicitly or by using the TreeView\_SetImageList macro.</summary>
/// <returns>Returns the handle to the previous image list, if any, or **NULL** otherwise.</returns>
/// <remarks>The tree-view control will not destroy the image list specified with this message. Your application must destroy the image list when it is no longer needed.</remarks>
internal const uint TVM_SETIMAGELIST = 4361U;
/// <summary>Retrieves the tree-view item that bears the specified relationship to a specified item. You can send this message explicitly, by using the TreeView\_GetNextItem macro.</summary>
/// <returns>Returns the handle to the item if successful. For most cases, the message returns a **NULL** value to indicate an error. See the Remarks section for details.</returns>
/// <remarks>
/// <para>This message will return **NULL** if the item being retrieved is the root node of the tree. For example, if you use this message with the TVGN\_PARENT flag on a first-level child of the tree view's root node, the message will return **NULL**. You can also use one of these related macros:</para>
/// <para>| | |---------------------------------------------------------------| | [**TreeView\_GetChild**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getchild) | | [**TreeView\_GetDropHilight**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getdrophilight) | | [**TreeView\_GetFirstVisible**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getfirstvisible) | | [**TreeView\_GetLastVisible**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getlastvisible) | | [**TreeView\_GetNextSibling**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getnextsibling) | | [**TreeView\_GetNextVisible**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getnextvisible) | | [**TreeView\_GetParent**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getparent) | | [**TreeView\_GetPrevSibling**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getprevsibling) | | [**TreeView\_GetPrevVisible**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getprevvisible) | | [**TreeView\_GetRoot**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getroot) | | [**TreeView\_GetSelection**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_getselection) |</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getnextitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETNEXTITEM = 4362U;
/// <summary>Selects the specified tree-view item, scrolls the item into view, or redraws the item in the style used to indicate the target of a drag-and-drop operation.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>If the specified item is the child of a collapsed parent item, the parent's list of child items is expanded to reveal the specified item. In this case, the control's parent window receives the [TVN\_ITEMEXPANDING](tvn-itemexpanding.md) and [TVN\_ITEMEXPANDED](tvn-itemexpanded.md) notification codes. Using the [**TreeView\_SelectItem**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_selectitem) macro is equivalent to sending the **TVM\_SELECTITEM** message with *wParam* set to the TVGN\_CARET value. Using the [**TreeView\_SelectDropTarget**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_selectdroptarget) macro is equivalent to sending the **TVM\_SELECTITEM** message with *wParam* set to the TVGN\_DROPHILITE value. Using [**TreeView\_SelectSetFirstVisible**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_selectsetfirstvisible) is equivalent to sending the **TVM\_SELECTITEM** message with *wParam* set to the TVGN\_FIRSTVISIBLE value.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-selectitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_SELECTITEM = 4363U;
/// <summary>Retrieves some or all of a tree-view item's attributes. You can send this message explicitly or by using the TreeView\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>When the message is sent, the **hItem** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure identifies the item to retrieve information about, and the **mask** member specifies the attributes to retrieve. If the TVIF\_TEXT flag is set in the **mask** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure, the **pszText** member must point to a valid buffer and the **cchTextMax** member must be set to the number of characters in that buffer.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETITEMA = 4364U;
/// <summary>Retrieves some or all of a tree-view item's attributes. You can send this message explicitly or by using the TreeView\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>When the message is sent, the **hItem** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure identifies the item to retrieve information about, and the **mask** member specifies the attributes to retrieve. If the TVIF\_TEXT flag is set in the **mask** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure, the **pszText** member must point to a valid buffer and the **cchTextMax** member must be set to the number of characters in that buffer.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETITEMW = 4414U;
/// <summary>Retrieves some or all of a tree-view item's attributes. You can send this message explicitly or by using the TreeView\_GetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>When the message is sent, the **hItem** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure identifies the item to retrieve information about, and the **mask** member specifies the attributes to retrieve. If the TVIF\_TEXT flag is set in the **mask** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure, the **pszText** member must point to a valid buffer and the **cchTextMax** member must be set to the number of characters in that buffer.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETITEM = 4414U;
/// <summary>The TVM\_SETITEM message sets some or all of a tree-view item's attributes. You can send this message explicitly or by using the TreeView\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>The **hItem** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure identifies the item, and the **mask** member specifies which attributes to set.</remarks>
internal const uint TVM_SETITEMA = 4365U;
/// <summary>The TVM\_SETITEM message sets some or all of a tree-view item's attributes. You can send this message explicitly or by using the TreeView\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>The **hItem** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure identifies the item, and the **mask** member specifies which attributes to set.</remarks>
internal const uint TVM_SETITEMW = 4415U;
/// <summary>The TVM\_SETITEM message sets some or all of a tree-view item's attributes. You can send this message explicitly or by using the TreeView\_SetItem macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>The **hItem** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) or [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure identifies the item, and the **mask** member specifies which attributes to set.</remarks>
internal const uint TVM_SETITEM = 4415U;
/// <summary>Begins in-place editing of the specified item's text, replacing the text of the item with a single-line edit control containing the text.</summary>
/// <returns>Returns the handle to the edit control used to edit the item text if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>This message sends a [TVN\_BEGINLABELEDIT](tvn-beginlabeledit.md) notification code to the parent of the tree-view control. When the user completes or cancels editing, the edit control is destroyed and the handle is no longer valid. You can subclass the edit control, but do not destroy it. The control must have the focus before you send this message to the control. Focus can be set using the [**SetFocus**](/windows/desktop/api/winuser/nf-winuser-setfocus) function.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-editlabel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_EDITLABELA = 4366U;
/// <summary>Begins in-place editing of the specified item's text, replacing the text of the item with a single-line edit control containing the text.</summary>
/// <returns>Returns the handle to the edit control used to edit the item text if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>This message sends a [TVN\_BEGINLABELEDIT](tvn-beginlabeledit.md) notification code to the parent of the tree-view control. When the user completes or cancels editing, the edit control is destroyed and the handle is no longer valid. You can subclass the edit control, but do not destroy it. The control must have the focus before you send this message to the control. Focus can be set using the [**SetFocus**](/windows/desktop/api/winuser/nf-winuser-setfocus) function.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-editlabel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_EDITLABELW = 4417U;
/// <summary>Begins in-place editing of the specified item's text, replacing the text of the item with a single-line edit control containing the text.</summary>
/// <returns>Returns the handle to the edit control used to edit the item text if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>This message sends a [TVN\_BEGINLABELEDIT](tvn-beginlabeledit.md) notification code to the parent of the tree-view control. When the user completes or cancels editing, the edit control is destroyed and the handle is no longer valid. You can subclass the edit control, but do not destroy it. The control must have the focus before you send this message to the control. Focus can be set using the [**SetFocus**](/windows/desktop/api/winuser/nf-winuser-setfocus) function.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-editlabel#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_EDITLABEL = 4417U;
/// <summary>Retrieves the handle to the edit control being used to edit a tree-view item's text. You can send this message explicitly or by using the TreeView\_GetEditControl macro.</summary>
/// <returns>Returns the handle to the edit control if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>When label editing begins, an edit control is created, but not positioned or displayed. Before it is displayed, the tree-view control sends its parent window an [TVN\_BEGINLABELEDIT](tvn-beginlabeledit.md) notification code. To customize label editing, implement a handler for [TVN\_BEGINLABELEDIT](tvn-beginlabeledit.md) and have it send a **TVM\_GETEDITCONTROL** message to the tree-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual **EM\_XXX** messages.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-geteditcontrol#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETEDITCONTROL = 4367U;
/// <summary>Obtains the number of items that can be fully visible in the client window of a tree-view control. You can send this message explicitly or by using the TreeView\_GetVisibleCount macro.</summary>
/// <returns>Returns the number of items that can be fully visible in the client window of the tree-view control.</returns>
/// <remarks>
/// <para>The number of items that can be fully visible may be greater than the number of items in the control. The control calculates this value by dividing the height of the client window by the height of an item. Note that the return value is the number of items that can be *fully* visible. If you can see all of 20 items and part of one more item, the return value is 20.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getvisiblecount#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETVISIBLECOUNT = 4368U;
/// <summary>Determines the location of the specified point relative to the client area of a tree-view control. You can send this message explicitly or by using the TreeView\_HitTest macro.</summary>
/// <returns>Returns the handle to the tree-view item that occupies the specified point, or **NULL** if no item occupies the point.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-hittest">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_HITTEST = 4369U;
/// <summary>Creates a dragging bitmap for the specified item in a tree-view control.</summary>
/// <returns>Returns the handle to the image list to which the dragging bitmap was added if successful, or **NULL** otherwise.</returns>
/// <remarks>
/// <para>If you create a tree-view control without an associated image list, you cannot use the **TVM\_CREATEDRAGIMAGE** message to create the image to display during a drag operation. You must implement your own method of creating a drag cursor. Your application is responsible for destroying the image list when it is no longer needed.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-createdragimage#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_CREATEDRAGIMAGE = 4370U;
/// <summary>Sorts the child items of the specified parent item in a tree-view control. You can send this message explicitly or by using the TreeView\_SortChildren macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>This message alphabetizes the tree items using [**lstrcmpi**](/windows/desktop/api/winbase/nf-winbase-lstrcmpia) on the item name. You can use the [**TVM\_SORTCHILDRENCB**](tvm-sortchildrencb.md) message to customize the ordering behavior.</remarks>
internal const uint TVM_SORTCHILDREN = 4371U;
/// <summary>Ensures that a tree-view item is visible, expanding the parent item or scrolling the tree-view control, if necessary. You can send this message explicitly or by using the TreeView\_EnsureVisible macro.</summary>
/// <returns>Returns nonzero if the system scrolled the items in the tree-view control and no items were expanded. Otherwise, the message returns zero.</returns>
/// <remarks>If the TVM\_ENSUREVISIBLE message expands the parent item, the parent window receives the [TVN\_ITEMEXPANDING](tvn-itemexpanding.md) and [TVN\_ITEMEXPANDED](tvn-itemexpanded.md) notification codes.</remarks>
internal const uint TVM_ENSUREVISIBLE = 4372U;
/// <summary>Sorts tree-view items using an application-defined callback function that compares the items. You can send this message explicitly or by using the TreeView\_SortChildrenCB macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-sortchildrencb">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_SORTCHILDRENCB = 4373U;
/// <summary>Ends the editing of a tree-view item's label. You can send this message explicitly or by using the TreeView\_EndEditLabelNow macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>This message causes the [TVN\_ENDLABELEDIT](tvn-endlabeledit.md) notification code to be sent to the parent window of the tree-view control.</remarks>
internal const uint TVM_ENDEDITLABELNOW = 4374U;
/// <summary>Retrieves the incremental search string for a tree-view control.</summary>
/// <returns>Returns the number of characters in the incremental search string.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. You must allocate a large enough buffer to hold the string. First call the message passing **NULL** in *lParam*. This returns the number of characters, excluding **NULL**, that are required. Then call the message a second time to retrieve the string. You should review [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. If the tree-view control is not in incremental search mode, the return value is zero.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getisearchstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETISEARCHSTRINGA = 4375U;
/// <summary>Retrieves the incremental search string for a tree-view control.</summary>
/// <returns>Returns the number of characters in the incremental search string.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. You must allocate a large enough buffer to hold the string. First call the message passing **NULL** in *lParam*. This returns the number of characters, excluding **NULL**, that are required. Then call the message a second time to retrieve the string. You should review [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. If the tree-view control is not in incremental search mode, the return value is zero.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getisearchstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETISEARCHSTRINGW = 4416U;
/// <summary>Retrieves the incremental search string for a tree-view control.</summary>
/// <returns>Returns the number of characters in the incremental search string.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message incorrectly might compromise the security of your program. You must allocate a large enough buffer to hold the string. First call the message passing **NULL** in *lParam*. This returns the number of characters, excluding **NULL**, that are required. Then call the message a second time to retrieve the string. You should review [Security Considerations: Microsoft Windows Controls](sec-comctls.md) before continuing. If the tree-view control is not in incremental search mode, the return value is zero.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getisearchstring#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETISEARCHSTRING = 4416U;
/// <summary>Sets a tree-view control's child tooltip control. You can send this message explicitly or by using the TreeView\_SetToolTips macro.</summary>
/// <returns>Returns the handle to tooltip control previously set for the tree-view control, or **NULL** if tooltips were not previously used.</returns>
/// <remarks>When created, tree-view controls automatically create a child tooltip control. To prevent a tree-view control from using tooltips, create the control with the [**TVS\_NOTOOLTIPS**](tree-view-control-window-styles.md) style.</remarks>
internal const uint TVM_SETTOOLTIPS = 4376U;
/// <summary>Retrieves the handle to the child tooltip control used by a tree-view control. You can send this message explicitly or by using the TreeView\_GetToolTips macro.</summary>
/// <returns>Returns the handle to the child tooltip control, or **NULL** if the control is not using tooltips.</returns>
/// <remarks>When created, tree-view controls automatically create a child tooltip control. To cause a tree-view control not to use tooltips, create the control with the [**TVS\_NOTOOLTIPS**](tree-view-control-window-styles.md) style.</remarks>
internal const uint TVM_GETTOOLTIPS = 4377U;
/// <summary>Sets the insertion mark in a tree-view control. You can send this message explicitly or by using the TreeView\_SetInsertMark macro.</summary>
/// <returns>Returns nonzero if successful, or zero otherwise.</returns>
/// <remarks>In some circumstances, the insert mark can appear in two places after a node is expanded. If you are using insertion marks, it is recommended that you force a refresh of the control after expanding a node.</remarks>
internal const uint TVM_SETINSERTMARK = 4378U;
/// <summary>TVM_SETUNICODEFORMAT message - Sets the Unicode character format flag for the control.</summary>
/// <returns>Returns the previous Unicode format flag for the control.</returns>
/// <remarks>See the remarks for [**CCM\_SETUNICODEFORMAT**](ccm-setunicodeformat.md) for a discussion of this message.</remarks>
internal const uint TVM_SETUNICODEFORMAT = 8197U;
/// <summary>Retrieves the Unicode character format flag for the control. You can send this message explicitly or use the TreeView\_GetUnicodeFormat macro.</summary>
/// <returns>Returns the Unicode format flag for the control. If this value is nonzero, the control is using Unicode characters. If this value is zero, the control is using ANSI characters.</returns>
/// <remarks>See the remarks for [**CCM\_GETUNICODEFORMAT**](ccm-getunicodeformat.md) for a discussion of this message.</remarks>
internal const uint TVM_GETUNICODEFORMAT = 8198U;
/// <summary>Sets the height of the tree-view items. You can send this message explicitly or by using the TreeView\_SetItemHeight macro.</summary>
/// <returns>Returns the previous height of the items, in pixels.</returns>
/// <remarks>The tree-view control uses this value for the height of all items. To modify the height of individual items, see the description of the **iIntegral** member of the [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa) structure.</remarks>
internal const uint TVM_SETITEMHEIGHT = 4379U;
/// <summary>Retrieves the current height of the each tree-view item. You can send this message explicitly or by using the TreeView\_GetItemHeight macro.</summary>
/// <returns>Returns the height of each item, in pixels.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getitemheight">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETITEMHEIGHT = 4380U;
/// <summary>Sets the background color of the control. You can send this message explicitly or by using the TreeView\_SetBkColor macro.</summary>
/// <returns>Returns a [**COLORREF**](/windows/desktop/gdi/colorref) value that represents the previous background color. If this value is -1, the control was using the system color for the background color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-setbkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_SETBKCOLOR = 4381U;
/// <summary>Sets the text color of the control. You can send this message explicitly or by using the TreeView\_SetTextColor macro.</summary>
/// <returns>Returns a **COLORREF** value that represents the previous text color. If this value is -1, the control was using the system color for the text color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-settextcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_SETTEXTCOLOR = 4382U;
/// <summary>Retrieves the current background color of the control. You can send this message explicitly or by using the TreeView\_GetBkColor macro.</summary>
/// <returns>Returns a [**COLORREF**](/windows/desktop/gdi/colorref) value that represents the current background color. If this value is -1, the control is using the system color for the background color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getbkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETBKCOLOR = 4383U;
/// <summary>Retrieves the current text color of the control. You can send this message explicitly or by using the TreeView\_GetTextColor macro.</summary>
/// <returns>Returns a [**COLORREF**](/windows/desktop/gdi/colorref) value that represents the current text color. If this value is -1, the control is using the system color for the text color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-gettextcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETTEXTCOLOR = 4384U;
/// <summary>Sets the maximum scroll time for the tree-view control. You can send this message explicitly or by using the TreeView\_SetScrollTime macro.</summary>
/// <returns>Returns the previous maximum scroll time, in milliseconds.</returns>
/// <remarks>The maximum scroll time is the longest amount of time that a scroll operation can take. Scrolling will be adjusted so that the scroll will take place within the maximum scroll time. A scroll operation may take less time than the maximum.</remarks>
internal const uint TVM_SETSCROLLTIME = 4385U;
/// <summary>Retrieves the maximum scroll time for the tree-view control. You can send this message explicitly or by using the TreeView\_GetScrollTime macro.</summary>
/// <returns>Returns the maximum scroll time, in milliseconds.</returns>
/// <remarks>The maximum scroll time is the longest amount of time that a scroll operation can take. The scrolling will be adjusted so that the scroll will take place within the maximum scroll time. A scroll operation may take less time than the maximum.</remarks>
internal const uint TVM_GETSCROLLTIME = 4386U;
/// <summary>Sets the color used to draw the insertion mark for the tree view. You can send this message explicitly or by using the TreeView\_SetInsertMarkColor macro.</summary>
/// <returns>Returns a **COLORREF** value that contains the previous insertion mark color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-setinsertmarkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_SETINSERTMARKCOLOR = 4389U;
/// <summary>Retrieves the color used to draw the insertion mark for the tree view. You can send this message explicitly or by using the TreeView\_GetInsertMarkColor macro.</summary>
/// <returns>Returns a [**COLORREF**](/windows/desktop/gdi/colorref) value that contains the current insertion mark color.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getinsertmarkcolor">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETINSERTMARKCOLOR = 4390U;
/// <summary>Sets the size of the border for the items in a tree-view control. You can send the message explicitly or by using the TreeView\_SetBorder macro.</summary>
/// <returns>Returns a **LONG** value that contains the previous border size, in pixels. The [**LOWORD**](/previous-versions/windows/desktop/legacy/ms632659(v=vs.85)) contains the previous size of the horizontal border, and the [**HIWORD**](/previous-versions/windows/desktop/legacy/ms632657(v=vs.85)) contains the previous size of the vertical border.</returns>
/// <remarks>
/// <para>**Security Warning:** Using this message might compromise the security of your program. The item border is set just for spacing purposes. A successful setting triggers a recalculation of the scroll bars. This message may not be supported in future versions of Comctl32.dll. Also, this message is not defined in commctrl.h. Add the following definitions to the source files of your application to use the message: </para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-setborder#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_SETBORDER = 4387U;
/// <summary>Retrieves some or all of a tree-view item's state attributes. You can send this message explicitly or by using the TreeView\_GetItemState macro.</summary>
/// <returns>Returns a **UINT** value with the appropriate state bits set to **TRUE**. Only those bits that are specified by *lParam* and that are **TRUE** will be set. This value is equivalent to the **state** member of [**TVITEMEX**](/windows/win32/api/commctrl/ns-commctrl-tvitemexa).</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getitemstate">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETITEMSTATE = 4391U;
/// <summary>The TVM\_SETLINECOLOR message sets the current line color.</summary>
/// <returns>Returns the previous line color.</returns>
/// <remarks>This message only changes line colors. To change the colors of the '+' and '-' inside the buttons, use the [**TVM\_SETTEXTCOLOR**](tvm-settextcolor.md) message.</remarks>
internal const uint TVM_SETLINECOLOR = 4392U;
/// <summary>The TVM\_GETLINECOLOR message gets the current line color.</summary>
/// <returns>Returns the current line color, or the CLR\_DEFAULT value if none has been specified.</returns>
/// <remarks>This message only retrieves line colors. To retrieve the colors of the '+' and '-' inside the buttons, use the [**TVM\_GETTEXTCOLOR**](tvm-gettextcolor.md) message.</remarks>
internal const uint TVM_GETLINECOLOR = 4393U;
/// <summary>Maps an accessibility ID to an HTREEITEM.</summary>
/// <returns>Returns the **HTREEITEM** that the specified accessibility ID is mapped to.</returns>
/// <remarks>
/// <para>When you add an item to a tree-view control an **HTREEITEM** returns, which uniquely identifies the item. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-mapaccidtohtreeitem#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_MAPACCIDTOHTREEITEM = 4394U;
/// <summary>Maps an HTREEITEM to an accessibility ID.</summary>
/// <returns>Returns an accessibility ID.</returns>
/// <remarks>
/// <para>When you add an item to a tree-view control an **HTREEITEM** handle is returned that uniquely identifies the item. > [!Note] > To use this message, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see [Enabling Visual Styles](cookbook-overview.md).</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-maphtreeitemtoaccid#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_MAPHTREEITEMTOACCID = 4395U;
/// <summary>Informs the tree-view control to set extended styles. Send this message or use the macro TreeView\_SetExtendedStyle.</summary>
/// <returns>If this message succeeds, it returns **S\_OK**. Otherwise, it returns an **HRESULT** error code.</returns>
/// <remarks>The extended styles for a tree-view control have nothing to do with the extended styles used with function [**CreateWindowEx**](/windows/desktop/api/winuser/nf-winuser-createwindowexa) or function [**SetWindowLong**](/windows/desktop/api/winuser/nf-winuser-setwindowlonga).</remarks>
internal const uint TVM_SETEXTENDEDSTYLE = 4396U;
/// <summary>Retrieves the extended style for a tree-view control. Send this message explicitly or by using the TreeView\_GetExtendedStyle macro.</summary>
/// <returns>Returns the value of extended style.For more information on styles, see [Tree-View Control Extended Styles](tree-view-control-window-extended-styles.md).</returns>
/// <remarks>The extended styles for a tree-view control have nothing to do with the extended styles used with function [**CreateWindowEx**](/windows/desktop/api/winuser/nf-winuser-createwindowexa) or function [**SetWindowLong**](/windows/desktop/api/winuser/nf-winuser-setwindowlonga).</remarks>
internal const uint TVM_GETEXTENDEDSTYLE = 4397U;
/// <summary>Sets information used to determine auto-scroll characteristics. You can send this message explicitly or by using the TreeView\_SetAutoScrollInfo macro.</summary>
/// <returns>Returns **TRUE**.</returns>
/// <remarks>Autoscroll information is used to scroll a nonvisible item into view. The control must have the [**TVS\_EX\_AUTOHSCROLL**](tree-view-control-window-extended-styles.md) extended style. For information on extended styles, see Tree-View Control Extended Styles.</remarks>
internal const uint TVM_SETAUTOSCROLLINFO = 4411U;
/// <summary>Sets the hot item for a tree-view control. You can send this message explicitly or by using the TreeView\_SetHot macro.</summary>
/// <returns>Returns **TRUE** if successful, or **FALSE** otherwise.</returns>
/// <remarks>
/// <para>The *hot item* is the item that the mouse is hovering over. This message makes an item look like it is the hot item even if the mouse is not hovering over it. This message has no visible effect if the [**TVS\_TRACKSELECT**](tree-view-control-window-styles.md) style is not set. If it succeeds, this message causes the hot item to be redrawn. This message is ignored if *lParam* is **NULL** and the tree-view control is tracking the mouse.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-sethot#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_SETHOT = 4410U;
/// <summary>TVM_GETSELECTEDCOUNT message - Not implemented.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getselectedcount">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETSELECTEDCOUNT = 4422U;
/// <summary>Shows the infotip for a specified item in a tree-view control. You can send this message explicitly or by using the TreeView\_ShowInfoTip macro..</summary>
/// <returns>Returns zero.</returns>
/// <remarks>Most applications do not use this message. Infotips are shown automatically. For more information, see Using Tree-view Infotips in the [About Tree-View Controls](tree-view-controls.md) overview.</remarks>
internal const uint TVM_SHOWINFOTIP = 4423U;
/// <summary>TVM\_GETITEMPARTRECT message</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvm-getitempartrect">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVM_GETITEMPARTRECT = 4424U;
internal const uint TVN_FIRST = 4294966896U;
internal const uint TVN_LAST = 4294966797U;
/// <summary>Notifies a tree-view control's parent window that the selection is about to change from one item to another. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to prevent the selection from changing.</returns>
/// <remarks>When responding to this notification code, applications should not delete the items that are gaining or losing the selection.</remarks>
internal const uint TVN_SELCHANGINGA = 4294966895U;
/// <summary>Notifies a tree-view control's parent window that the selection is about to change from one item to another. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to prevent the selection from changing.</returns>
/// <remarks>When responding to this notification code, applications should not delete the items that are gaining or losing the selection.</remarks>
internal const uint TVN_SELCHANGINGW = 4294966846U;
/// <summary>Notifies a tree-view control's parent window that the selection has changed from one item to another. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-selchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_SELCHANGEDA = 4294966894U;
/// <summary>Notifies a tree-view control's parent window that the selection has changed from one item to another. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-selchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_SELCHANGEDW = 4294966845U;
/// <summary>Requests that a tree-view control's parent window provide information needed to display or sort an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para>This notification code is sent under the following circumstances: - If the **pszText** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the LPSTR\_TEXTCALLBACK value, the control sends this notification code to retrieve the item's text. In this case, the **mask** member of *lParam* will have the TVIF\_TEXT flag set. - If the **iImage** or **iSelectedImage** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_IMAGECALLBACK value, the control sends this notification code to retrieve the index of an item's icons in the control's image list. In this case, if the item is selected, the **mask** member of *lParam* will have the TVIF\_SELECTEDIMAGE flag set. If the item is not selected, the **mask** member of *lParam* will have the TVIF\_IMAGE flag set. - If the **cChildren** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_CHILDRENCALLBACK value, the control sends this notification code to retrieve a value that indicates whether the item has child items. In this case, the **mask** member of *lParam* will have the TVIF\_CHILDREN flag set.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-getdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_GETDISPINFOA = 4294966893U;
/// <summary>Requests that a tree-view control's parent window provide information needed to display or sort an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para>This notification code is sent under the following circumstances: - If the **pszText** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the LPSTR\_TEXTCALLBACK value, the control sends this notification code to retrieve the item's text. In this case, the **mask** member of *lParam* will have the TVIF\_TEXT flag set. - If the **iImage** or **iSelectedImage** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_IMAGECALLBACK value, the control sends this notification code to retrieve the index of an item's icons in the control's image list. In this case, if the item is selected, the **mask** member of *lParam* will have the TVIF\_SELECTEDIMAGE flag set. If the item is not selected, the **mask** member of *lParam* will have the TVIF\_IMAGE flag set. - If the **cChildren** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_CHILDRENCALLBACK value, the control sends this notification code to retrieve a value that indicates whether the item has child items. In this case, the **mask** member of *lParam* will have the TVIF\_CHILDREN flag set.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-getdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_GETDISPINFOW = 4294966844U;
/// <summary>Notifies a tree-view control's parent window that it must update the information it maintains about an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para>If the **pszText** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the LPSTR\_TEXTCALLBACK value, the control sends this notification to set the item's text. In this case, the **mask** member of *lParam* will have the TVIF\_TEXT flag set. If the **iImage** or **iSelectedImage** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_IMAGECALLBACK value, the control sends this notification to retrieve the index of the icon image to display. In this case, the **mask** member of *lParam* will have the TVIF\_IMAGE or TVIF\_SELECTEDIMAGE flag set.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-setdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_SETDISPINFOA = 4294966892U;
/// <summary>Notifies a tree-view control's parent window that it must update the information it maintains about an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para>If the **pszText** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the LPSTR\_TEXTCALLBACK value, the control sends this notification to set the item's text. In this case, the **mask** member of *lParam* will have the TVIF\_TEXT flag set. If the **iImage** or **iSelectedImage** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_IMAGECALLBACK value, the control sends this notification to retrieve the index of the icon image to display. In this case, the **mask** member of *lParam* will have the TVIF\_IMAGE or TVIF\_SELECTEDIMAGE flag set.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-setdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_SETDISPINFOW = 4294966843U;
/// <summary>Notifies a tree-view control's parent window that a parent item's list of child items is about to expand or collapse. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to prevent the list from expanding or collapsing.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemexpanding">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMEXPANDINGA = 4294966891U;
/// <summary>Notifies a tree-view control's parent window that a parent item's list of child items is about to expand or collapse. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to prevent the list from expanding or collapsing.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemexpanding">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMEXPANDINGW = 4294966842U;
/// <summary>Notifies a tree-view control's parent window that a parent item's list of child items has expanded or collapsed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemexpanded">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMEXPANDEDA = 4294966890U;
/// <summary>Notifies a tree-view control's parent window that a parent item's list of child items has expanded or collapsed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemexpanded">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMEXPANDEDW = 4294966841U;
/// <summary>Notifies a tree-view control's parent window that a drag-and-drop operation involving the left mouse button is being initiated. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>A tree-view control that has the [**TVS\_DISABLEDRAGDROP**](tree-view-control-window-styles.md) style does not send this notification code.</remarks>
internal const uint TVN_BEGINDRAGA = 4294966889U;
/// <summary>Notifies a tree-view control's parent window that a drag-and-drop operation involving the left mouse button is being initiated. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>A tree-view control that has the [**TVS\_DISABLEDRAGDROP**](tree-view-control-window-styles.md) style does not send this notification code.</remarks>
internal const uint TVN_BEGINDRAGW = 4294966840U;
/// <summary>Notifies a tree-view control's parent window about the initiation of a drag-and-drop operation involving the right mouse button. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-beginrdrag">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_BEGINRDRAGA = 4294966888U;
/// <summary>Notifies a tree-view control's parent window about the initiation of a drag-and-drop operation involving the right mouse button. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-beginrdrag">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_BEGINRDRAGW = 4294966839U;
/// <summary>Notifies a tree-view control's parent window that an item is being deleted. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>If the **lParam** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure points to memory allocated by your application, you can free it when you receive the TVN\_DELETEITEM notification code.</remarks>
internal const uint TVN_DELETEITEMA = 4294966887U;
/// <summary>Notifies a tree-view control's parent window that an item is being deleted. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>If the **lParam** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure points to memory allocated by your application, you can free it when you receive the TVN\_DELETEITEM notification code.</remarks>
internal const uint TVN_DELETEITEMW = 4294966838U;
/// <summary>Notifies a tree-view control's parent window about the start of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to cancel label editing.</returns>
/// <remarks>
/// <para>When label editing begins, an edit control is created but not positioned or displayed. Before it is displayed, the tree-view control sends its parent window a TVN\_BEGINLABELEDIT notification code. To customize label editing, implement a handler for TVN\_BEGINLABELEDIT and have it send a [**TVM\_GETEDITCONTROL**](tvm-geteditcontrol.md) message to the tree-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual EM\_XXX messages. When the user cancels or completes the editing, the parent window receives a [TVN\_ENDLABELEDIT](tvn-endlabeledit.md) notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-beginlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_BEGINLABELEDITA = 4294966886U;
/// <summary>Notifies a tree-view control's parent window about the start of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to cancel label editing.</returns>
/// <remarks>
/// <para>When label editing begins, an edit control is created but not positioned or displayed. Before it is displayed, the tree-view control sends its parent window a TVN\_BEGINLABELEDIT notification code. To customize label editing, implement a handler for TVN\_BEGINLABELEDIT and have it send a [**TVM\_GETEDITCONTROL**](tvm-geteditcontrol.md) message to the tree-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual EM\_XXX messages. When the user cancels or completes the editing, the parent window receives a [TVN\_ENDLABELEDIT](tvn-endlabeledit.md) notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-beginlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_BEGINLABELEDITW = 4294966837U;
/// <summary>Notifies a tree-view control's parent window about the end of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>If the **pszText** member is non-**NULL**, return **TRUE** to set the item's label to the edited text. Return **FALSE** to reject the edited text and revert to the original label.</returns>
/// <remarks>
/// <para>If the **pszText** member is **NULL**, the return value is ignored. If you specified the LPSTR\_TEXTCALLBACK value for this item and the **pszText** member is non-**NULL**, your TVN\_ENDLABELEDIT handler should copy the text from **pszText** to your local storage.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-endlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ENDLABELEDITA = 4294966885U;
/// <summary>Notifies a tree-view control's parent window about the end of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>If the **pszText** member is non-**NULL**, return **TRUE** to set the item's label to the edited text. Return **FALSE** to reject the edited text and revert to the original label.</returns>
/// <remarks>
/// <para>If the **pszText** member is **NULL**, the return value is ignored. If you specified the LPSTR\_TEXTCALLBACK value for this item and the **pszText** member is non-**NULL**, your TVN\_ENDLABELEDIT handler should copy the text from **pszText** to your local storage.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-endlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ENDLABELEDITW = 4294966836U;
/// <summary>Notifies a tree-view control's parent window that the user pressed a key and the tree-view control has the input focus. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>If the **wVKey** member of *lParam* is a character key code, the character will be used as part of an incremental search. Return nonzero to exclude the character from the incremental search, or zero to include the character in the search. For all other keys, the return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-keydown">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_KEYDOWN = 4294966884U;
/// <summary>Sent by a tree-view control that has the TVS\_INFOTIP style. This notification code is sent when the control is requesting additional text information to be displayed in a tooltip. The notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The control ignores the return value for this notification code.</returns>
/// <remarks>This notification code is only sent by tree-view controls that have the [**TVS\_INFOTIP**](tree-view-control-window-styles.md) style.</remarks>
internal const uint TVN_GETINFOTIPA = 4294966883U;
/// <summary>Sent by a tree-view control that has the TVS\_INFOTIP style. This notification code is sent when the control is requesting additional text information to be displayed in a tooltip. The notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The control ignores the return value for this notification code.</returns>
/// <remarks>This notification code is only sent by tree-view controls that have the [**TVS\_INFOTIP**](tree-view-control-window-styles.md) style.</remarks>
internal const uint TVN_GETINFOTIPW = 4294966882U;
/// <summary>Sent by a tree-view control with the TVS\_SINGLEEXPAND style when the user opens or closes a tree item using a single click of the mouse. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>
/// <para>Return TVNRET\_DEFAULT to allow the default behavior to occur. To modify the default behavior, return:</para>
/// <para>| Return code | Description | |------------------------------------------------------------------------------------------------|------------------------------------------------------------------| | <dl> <dt>**TVNRET\_SKIPOLD**</dt> </dl> | Skip default processing of the item being unselected.<br/> | | <dl> <dt>**TVNRET\_SKIPNEW**</dt> </dl> | Skip default processing of the item being selected.<br/> |</para>
/// </returns>
/// <remarks>
/// <para>To skip default processing of selected and unselected items, return both TVNRET\_SKIPOLD and TVNRET\_SKIPNEW by combining them with a logical OR. This notification code is only sent by tree-view controls that have the [**TVS\_SINGLEEXPAND**](tree-view-control-window-styles.md) style.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-singleexpand#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_SINGLEEXPAND = 4294966881U;
/// <summary>Notifies a tree-view control's parent window that item attributes are about to change. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to accept the change, or **TRUE** to prevent the change.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemchanging">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMCHANGINGA = 4294966880U;
/// <summary>Notifies a tree-view control's parent window that item attributes are about to change. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to accept the change, or **TRUE** to prevent the change.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemchanging">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMCHANGINGW = 4294966879U;
/// <summary>Notifies a tree-view control's parent window that item attributes have changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to accept the change, or **TRUE** to prevent the change.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMCHANGEDA = 4294966878U;
/// <summary>Notifies a tree-view control's parent window that item attributes have changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to accept the change, or **TRUE** to prevent the change.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMCHANGEDW = 4294966877U;
/// <summary>Sent by a tree-view control to its parent when the drawing of a icon or overlay has failed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>No return value.</returns>
/// <remarks>
/// <para>The tree-view control must have the [**TVS\_EX\_DRAWIMAGEASYNC**](tree-view-control-window-extended-styles.md) extended style. Note that this is equivalent to list-view's LVN\_ASYNCDRAWN flag and its corresponding style. This control does not draw asynchronously. Asynchronous is used in the context that the tree-view control does not synchronously extract an image if it is not available. (For instance, the image may not be available if the tree-view control uses a sparse image list, since the image may be unloaded.) Instead, when an image is not available, the control synchronously asks the parent what action to take by sending the parent an TVN\_ASYNCDRAW notification with a [**NMTVASYNCDRAW**](/windows/win32/api/commctrl/ns-commctrl-nmtvasyncdraw) structure. The **hr** member of this structure describes the reason the control's draw failed. An **hr** result of E\_PENDING means the image is not present at all (the image needs to be extracted). Success indicates that the image is present but not at the required image quality. The parent sets the **dwRetFlags** member of the structure to inform the control how to proceed. For instance, the parent may return another image, in the **iRetImageIndex** member, for the control to draw. In this case, the parent sets the **dwRetFlags** member to ADRF\_DRAWIMAGE. If the control finds the returned image has not been extracted, yet another TVN\_ASYNCDRAW notification may be sent by the control. If an image is not available, the idea behind asynchronous is to allow the parent do the extraction in the background so that extraction does not block the UI thread, that is, the thread the control is on. The parent may return ADRF\_DRAWNOTHING to the control, then launch a background thread to extract the icon. Once extracted, the parent may set the icon in the treeview control with macro [**TreeView\_SetItem**](/windows/desktop/api/Commctrl/nf-commctrl-treeview_setitem). This causes tree-view to invalidate the item and eventually repaint it with the extracted image in the image list. The following code example, to be used as part of a larger program, shows how a parent may process two possible return codes in this notification by a control, and decide what action the control should take. Setting **dwRetFlags** is not shown.</para>
/// <para></para>
/// <para>This doc was truncated.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-asyncdraw#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ASYNCDRAW = 4294966876U;
/// <summary>Notifies a tree-view control's parent window that the selection is about to change from one item to another. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to prevent the selection from changing.</returns>
/// <remarks>When responding to this notification code, applications should not delete the items that are gaining or losing the selection.</remarks>
internal const uint TVN_SELCHANGING = 4294966846U;
/// <summary>Notifies a tree-view control's parent window that the selection has changed from one item to another. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-selchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_SELCHANGED = 4294966845U;
/// <summary>Requests that a tree-view control's parent window provide information needed to display or sort an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para>This notification code is sent under the following circumstances: - If the **pszText** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the LPSTR\_TEXTCALLBACK value, the control sends this notification code to retrieve the item's text. In this case, the **mask** member of *lParam* will have the TVIF\_TEXT flag set. - If the **iImage** or **iSelectedImage** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_IMAGECALLBACK value, the control sends this notification code to retrieve the index of an item's icons in the control's image list. In this case, if the item is selected, the **mask** member of *lParam* will have the TVIF\_SELECTEDIMAGE flag set. If the item is not selected, the **mask** member of *lParam* will have the TVIF\_IMAGE flag set. - If the **cChildren** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_CHILDRENCALLBACK value, the control sends this notification code to retrieve a value that indicates whether the item has child items. In this case, the **mask** member of *lParam* will have the TVIF\_CHILDREN flag set.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-getdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_GETDISPINFO = 4294966844U;
/// <summary>Notifies a tree-view control's parent window that it must update the information it maintains about an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para>If the **pszText** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the LPSTR\_TEXTCALLBACK value, the control sends this notification to set the item's text. In this case, the **mask** member of *lParam* will have the TVIF\_TEXT flag set. If the **iImage** or **iSelectedImage** member of the item's [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure is the I\_IMAGECALLBACK value, the control sends this notification to retrieve the index of the icon image to display. In this case, the **mask** member of *lParam* will have the TVIF\_IMAGE or TVIF\_SELECTEDIMAGE flag set.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-setdispinfo#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_SETDISPINFO = 4294966843U;
/// <summary>Notifies a tree-view control's parent window that a parent item's list of child items is about to expand or collapse. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to prevent the list from expanding or collapsing.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemexpanding">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMEXPANDING = 4294966842U;
/// <summary>Notifies a tree-view control's parent window that a parent item's list of child items has expanded or collapsed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemexpanded">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMEXPANDED = 4294966841U;
/// <summary>Notifies a tree-view control's parent window that a drag-and-drop operation involving the left mouse button is being initiated. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>A tree-view control that has the [**TVS\_DISABLEDRAGDROP**](tree-view-control-window-styles.md) style does not send this notification code.</remarks>
internal const uint TVN_BEGINDRAG = 4294966840U;
/// <summary>Notifies a tree-view control's parent window about the initiation of a drag-and-drop operation involving the right mouse button. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-beginrdrag">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_BEGINRDRAG = 4294966839U;
/// <summary>Notifies a tree-view control's parent window that an item is being deleted. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The return value is ignored.</returns>
/// <remarks>If the **lParam** member of the [**TVITEM**](/windows/win32/api/commctrl/ns-commctrl-tvitema) structure points to memory allocated by your application, you can free it when you receive the TVN\_DELETEITEM notification code.</remarks>
internal const uint TVN_DELETEITEM = 4294966838U;
/// <summary>Notifies a tree-view control's parent window about the start of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **TRUE** to cancel label editing.</returns>
/// <remarks>
/// <para>When label editing begins, an edit control is created but not positioned or displayed. Before it is displayed, the tree-view control sends its parent window a TVN\_BEGINLABELEDIT notification code. To customize label editing, implement a handler for TVN\_BEGINLABELEDIT and have it send a [**TVM\_GETEDITCONTROL**](tvm-geteditcontrol.md) message to the tree-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual EM\_XXX messages. When the user cancels or completes the editing, the parent window receives a [TVN\_ENDLABELEDIT](tvn-endlabeledit.md) notification code.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-beginlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_BEGINLABELEDIT = 4294966837U;
/// <summary>Notifies a tree-view control's parent window about the end of label editing for an item. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>If the **pszText** member is non-**NULL**, return **TRUE** to set the item's label to the edited text. Return **FALSE** to reject the edited text and revert to the original label.</returns>
/// <remarks>
/// <para>If the **pszText** member is **NULL**, the return value is ignored. If you specified the LPSTR\_TEXTCALLBACK value for this item and the **pszText** member is non-**NULL**, your TVN\_ENDLABELEDIT handler should copy the text from **pszText** to your local storage.</para>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-endlabeledit#">Read more on docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ENDLABELEDIT = 4294966836U;
/// <summary>Sent by a tree-view control that has the TVS\_INFOTIP style. This notification code is sent when the control is requesting additional text information to be displayed in a tooltip. The notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>The control ignores the return value for this notification code.</returns>
/// <remarks>This notification code is only sent by tree-view controls that have the [**TVS\_INFOTIP**](tree-view-control-window-styles.md) style.</remarks>
internal const uint TVN_GETINFOTIP = 4294966882U;
/// <summary>Notifies a tree-view control's parent window that item attributes are about to change. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to accept the change, or **TRUE** to prevent the change.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemchanging">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMCHANGING = 4294966879U;
/// <summary>Notifies a tree-view control's parent window that item attributes have changed. This notification code is sent in the form of a WM\_NOTIFY message.</summary>
/// <returns>Returns **FALSE** to accept the change, or **TRUE** to prevent the change.</returns>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/Controls/tvn-itemchanged">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVN_ITEMCHANGED = 4294966877U;
internal const uint TVS_HASBUTTONS = 1U;
internal const uint TVS_HASLINES = 2U;
internal const uint TVS_LINESATROOT = 4U;
internal const uint TVS_EDITLABELS = 8U;
internal const uint TVS_DISABLEDRAGDROP = 16U;
internal const uint TVS_SHOWSELALWAYS = 32U;
internal const uint TVS_RTLREADING = 64U;
internal const uint TVS_NOTOOLTIPS = 128U;
internal const uint TVS_CHECKBOXES = 256U;
internal const uint TVS_TRACKSELECT = 512U;
internal const uint TVS_SINGLEEXPAND = 1024U;
internal const uint TVS_INFOTIP = 2048U;
internal const uint TVS_FULLROWSELECT = 4096U;
internal const uint TVS_NOSCROLL = 8192U;
internal const uint TVS_NONEVENHEIGHT = 16384U;
internal const uint TVS_NOHSCROLL = 32768U;
internal const uint TVS_EX_NOSINGLECOLLAPSE = 1U;
internal const uint TVS_EX_MULTISELECT = 2U;
internal const uint TVS_EX_DOUBLEBUFFER = 4U;
internal const uint TVS_EX_NOINDENTSTATE = 8U;
internal const uint TVS_EX_RICHTOOLTIP = 16U;
internal const uint TVS_EX_AUTOHSCROLL = 32U;
internal const uint TVS_EX_FADEINOUTEXPANDOS = 64U;
internal const uint TVS_EX_PARTIALCHECKBOXES = 128U;
internal const uint TVS_EX_EXCLUSIONCHECKBOXES = 256U;
internal const uint TVS_EX_DIMMEDCHECKBOXES = 512U;
internal const uint TVS_EX_DRAWIMAGEASYNC = 1024U;
/// <summary>Indicates the normal image list, which contains selected, nonselected, and overlay images for the items of a tree-view control.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVSIL_NORMAL = 0U;
/// <summary>Indicates the state image list. You can use state images to indicate application-defined item states. A state image is displayed to the left of an item's selected or nonselected image.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/commctrl/nf-commctrl-treeview_getimagelist">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const uint TVSIL_STATE = 2U;
internal const uint UiaAppendRuntimeId = 3U;
internal const int UiaRootObjectId = -25;
internal const uint UIS_SET = 1U;
internal const uint UIS_CLEAR = 2U;
internal const uint UIS_INITIALIZE = 3U;
internal const uint UISF_HIDEFOCUS = 1U;
internal const uint UISF_HIDEACCEL = 2U;
internal const uint UISF_ACTIVE = 4U;
internal static readonly winmdroot.Foundation.VARIANT_BOOL VARIANT_TRUE = (winmdroot.Foundation.VARIANT_BOOL)(-1);
internal static readonly winmdroot.Foundation.VARIANT_BOOL VARIANT_FALSE = (winmdroot.Foundation.VARIANT_BOOL)(0);
internal const uint WA_INACTIVE = 0U;
internal const uint WA_ACTIVE = 1U;
internal const uint WA_CLICKACTIVE = 2U;
internal const string WC_BUTTON = "Button";
internal const string WC_COMBOBOX = "ComboBox";
internal const string WC_EDIT = "Edit";
internal const string WC_LISTBOX = "ListBox";
internal const string WC_LISTVIEW = "SysListView32";
internal const string WC_SCROLLBAR = "ScrollBar";
internal const string WC_STATIC = "Static";
internal const string WC_TABCONTROL = "SysTabControl32";
internal const string WC_TREEVIEW = "SysTreeView32";
internal const uint WHEEL_DELTA = 120U;
internal const uint WINEVENT_INCONTEXT = 4U;
internal const int WSF_VISIBLE = 1;
/// <summary>The first X button was pressed or released.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-mousehookstructex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const ushort XBUTTON1 = 1;
/// <summary>The second X button was pressed or released.</summary>
/// <remarks>
/// <para><see href="https://learn.microsoft.com/windows/win32/api/winuser/ns-winuser-mousehookstructex">Learn more about this API from docs.microsoft.com</see>.</para>
/// </remarks>
internal const ushort XBUTTON2 = 2;
}
}
|