/// <summary>Defines the prototype for the callback function used by <c>RemoveWindowSubclass</c> and <c>SetWindowSubclass</c>.</summary>
/// <param name="hWnd">
/// <para>Type: <c>HWND</c></para>
/// <para>The handle to the subclassed window.</para>
/// </param>
/// <param name="uMsg">
/// <para>Type: <c>UINT</c></para>
/// <para>The message being passed.</para>
/// </param>
/// <param name="wParam">
/// <para>Type: <c>WPARAM</c></para>
/// <para>Additional message information. The contents of this parameter depend on the value of uMsg.</para>
/// </param>
/// <param name="lParam">
/// <para>Type: <c>LPARAM</c></para>
/// <para>Additional message information. The contents of this parameter depend on the value of uMsg.</para>
/// </param>
/// <param name="uIdSubclass">
/// <para>Type: <c>UINT_PTR</c></para>
/// <para>The subclass ID.</para>
/// </param>
/// <param name="dwRefData">
/// <para>Type: <c>DWORD_PTR</c></para>
/// <para>The reference data provided to the <c>SetWindowSubclass</c> function. This can be used to associate the subclass instance with a "this" pointer.</para>
/// </param>
/// <returns>
/// <para>Type: <c>LRESULT</c></para>
/// <para>The return value is the result of the message processing and depends on the message sent.</para>
/// <summary>The set of bit flags that indicate which common control classes will be loaded from the DLL when calling <see cref="InitCommonControlsEx(ref INITCOMMONCONTROLSEX)"/>.</summary>
/// <summary>Load tab and tooltip control classes.</summary>
ICC_TAB_CLASSES=0X00000008,
/// <summary>Load tree-view and tooltip control classes.</summary>
ICC_TREEVIEW_CLASSES=0X00000002,
/// <summary>Load up-down control class.</summary>
ICC_UPDOWN_CLASS=0X00000010,
/// <summary>Load ComboBoxEx class.</summary>
ICC_USEREX_CLASSES=0X00000200,
/// <summary>
/// Load animate control, header, hot key, list-view, progress bar, status bar, tab, tooltip, toolbar, trackbar, tree-view, and up-down control classes.
/// </summary>
ICC_WIN95_CLASSES=0X000000FF
}
/// <summary>Notification codes for CommCtrl.h</summary>
publicenumCommonControlNotification
{
/// <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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_OUTOFMEMORY=NM_FIRST-1,
/// <summary>Sent by a control when the user clicks with the left mouse button. This notification code is sent in the form of a WM_NOTIFY message.</summary>
NM_CLICK=NM_FIRST-2,
/// <summary>
/// Sent by a control when the user double-clicks with the left mouse button. This notification code is sent in the form of a WM_NOTIFY message.
/// </summary>
NM_DBLCLK=NM_FIRST-3,
/// <summary>
/// Notifies a 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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_RETURN=NM_FIRST-4,
/// <summary>Sent by a control when the user clicks with the right mouse button. This notification code is sent in the form of a WM_NOTIFY message.</summary>
NM_RCLICK=NM_FIRST-5,
/// <summary>
/// Sent by a control when the user double-clicks with the right mouse button. This notification code is sent in the form of a WM_NOTIFY message.
/// </summary>
NM_RDBLCLK=NM_FIRST-6,
/// <summary>
/// Notifies a 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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_SETFOCUS=NM_FIRST-7,
/// <summary>
/// Notifies a 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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_KILLFOCUS=NM_FIRST-8,
/// <summary>
/// Notifies a control's parent window about custom drawing operations. This notification code is sent in the form of a WM_NOTIFY message.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>
/// A pointer to a custom draw-related structure that contains information about the drawing operation. The following list specifies the controls and
/// their associated structures.
/// <list type="table">
/// <listheader>
/// <term>Control</term>
/// <term>Custom Draw Structure</term>
/// </listheader>
/// <item>
/// <term>Rebar, trackbar, and header</term>
/// <term>NMCUSTOMDRAW</term>
/// </item>
/// <item>
/// <term>List view</term>
/// <term>NMLVCUSTOMDRAW</term>
/// </item>
/// <item>
/// <term>Tooltip</term>
/// <term>NMTTCUSTOMDRAW</term>
/// </item>
/// <item>
/// <term>Tree view</term>
/// <term>NMTVCUSTOMDRAW</term>
/// </item>
/// <item>
/// <term>Toolbar</term>
/// <term>NMTBCUSTOMDRAW</term>
/// </item>
/// </list>
/// </description>
/// </item>
/// </list>
/// <item>
/// <term>Return value</term>
/// <description>
/// The value your application can return depends on the current drawing stage. The dwDrawStage member of the associated NMCUSTOMDRAW structure holds
/// a value that specifies the drawing stage.
/// </description>
/// </item>
/// </summary>
NM_CUSTOMDRAW=NM_FIRST-12,
/// <summary>
/// Sent by a control when the mouse hovers over an item. This notification code is sent in the form of a WM_NOTIFY message.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// <item>
/// <term>Return value</term>
/// <description>
/// Unless otherwise specified, return zero to allow the control to process the hover normally, or nonzero to prevent the hover from being processed.
/// </description>
/// </item>
/// </list>
/// </summary>
NM_HOVER=NM_FIRST-13,
/// <summary>
/// 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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>
/// A pointer to a NMMOUSE structure that contains information about the notification code. The pt member contains the mouse coordinates of the hit
/// test message.
/// </description>
/// </item>
/// <item>
/// <term>Return value</term>
/// <description>
/// 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 to override the default hit test processing.
/// </description>
/// </item>
/// </list>
/// </summary>
NM_NCHITTEST=NM_FIRST-14,
/// <summary>
/// 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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMKEY structure that contains additional information about the key that caused the notification code.</description>
/// </item>
/// <item>
/// <term>Return value</term>
/// <description>Return nonzero to prevent the control from processing the key, or zero otherwise.</description>
/// </item>
/// </list>
/// </summary>
NM_KEYDOWN=NM_FIRST-15,
/// <summary>
/// Notifies a control's parent window that the control is releasing mouse capture. This notification code is sent in the form of a WM_NOTIFY message.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_RELEASEDCAPTURE=NM_FIRST-16,
/// <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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMMOUSE structure that contains additional information about this notification.</description>
/// </item>
/// <item>
/// <term>Return value</term>
/// <description>Return zero to enable the control to set the cursor or nonzero to prevent the control from setting the cursor.</description>
/// </item>
/// </list>
/// </summary>
NM_SETCURSOR=NM_FIRST-17,
/// <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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMCHAR structure that contains additional information about the character that caused the notification code.</description>
/// </item>
/// </list>
/// </summary>
NM_CHAR=NM_FIRST-18,
/// <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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMTOOLTIPSCREATED structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_TOOLTIPSCREATED=NM_FIRST-19,
/// <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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_LDOWN=NM_FIRST-20,
/// <summary>This notification code is not supported.</summary>
NM_RDOWN=NM_FIRST-21,
/// <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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_THEMECHANGED=NM_FIRST-22,
/// <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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMHDR structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_FONTCHANGED=NM_FIRST-23,
/// <summary>
/// Notifies a control's parent window about custom text operations. This notification code is sent in the form of a WM_NOTIFY message.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMCUSTOMTEXT structure that contains additional information about this notification.</description>
/// </item>
/// </list>
/// </summary>
NM_CUSTOMTEXT=NM_FIRST-24,
/// <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.
/// <list>
/// <item>
/// <term>lParam</term>
/// <description>A pointer to an NMTVSTATEIMAGECHANGING structure that contains additional information about this notification.</description>
/// The control will draw itself. It will not send any additional NM_CUSTOMDRAW notification codes for this paint cycle. This occurs when the
/// dwDrawStage of the NMCUSTOMDRAW structure equals CDDS_PREPAINT.
/// </summary>
CDRF_DODEFAULT=0x00000000,
/// <summary>
/// The application specified a new font for the item; the control will use the new font. For more information about changing fonts, see Changing
/// fonts and colors. This occurs when the dwDrawStage of the NMCUSTOMDRAW structure equals CDDS_ITEMPREPAINT.
/// </summary>
CDRF_NEWFONT=0x00000002,
/// <summary>
/// The application drew the item manually. The control will not draw the item. This occurs when the dwDrawStage of the NMCUSTOMDRAW structure equals CDDS_ITEMPREPAINT.
/// </summary>
CDRF_SKIPDEFAULT=0x00000004,
/// <summary>Windows Vista and later. The control will draw the background.</summary>
CDRF_DOERASE=0x00000008,
/// <summary>
/// The control will notify the parent after painting an item. This occurs when the dwDrawStage of the NMCUSTOMDRAW structure equals CDDS_PREPAINT.
/// </summary>
CDRF_NOTIFYPOSTPAINT=0x00000010,
/// <summary>
/// The control will notify the parent of any item-related drawing operations. It will send NM_CUSTOMDRAW notification codes before and after drawing
/// items. This occurs when the dwDrawStage of the NMCUSTOMDRAW structure equals CDDS_PREPAINT.
/// </summary>
CDRF_NOTIFYITEMDRAW=0x00000020,
/// <summary>
/// Internet Explorer 4.0 and later. The control will notify the parent of any item-related drawing operations. It will send NM_CUSTOMDRAW
/// notification codes before and after drawing items. This occurs when the dwDrawStage of the NMCUSTOMDRAW structure equals CDDS_PREPAINT. This flag
/// is identical to CDRF_NOTIFYITEMDRAW and its use is context-dependent.
/// </summary>
CDRF_NOTIFYSUBITEMDRAW=0x00000020,
/// <summary>
/// The control will notify the parent after erasing an item. This occurs when the dwDrawStage of the NMCUSTOMDRAW structure equals CDDS_PREPAINT.
/// </summary>
CDRF_NOTIFYPOSTERASE=0x00000040,
/// <summary>Windows Vista and later. The control will not draw the focus rectangle.</summary>
/// The change in the hot item resulted from an event that could not be determined. This will most often be due to a change in focus or the
/// TB_SETHOTITEM message.
/// </summary>
HICF_OTHER=0x00000000,
/// <summary>The change in the hot item resulted from a mouse event.</summary>
HICF_MOUSE=0x00000001,
/// <summary>The change in the hot item was caused by an arrow key.</summary>
HICF_ARROWKEYS=0x00000002,
/// <summary>The change in the hot item was caused by a shortcut key.</summary>
HICF_ACCELERATOR=0x00000004,
/// <summary>Modifies HICF_ACCELERATOR. If this flag is set, more than one item has the same shortcut key character.</summary>
HICF_DUPACCEL=0x00000008,
/// <summary>Modifies the other reason flags. If this flag is set, there is no previous hot item and idOld does not contain valid information.</summary>
HICF_ENTERING=0x00000010,
/// <summary>Modifies the other reason flags. If this flag is set, there is no new hot item and idNew does not contain valid information.</summary>
HICF_LEAVING=0x00000020,
/// <summary>The change in the hot item resulted from the user entering the shortcut key for an item that was already hot.</summary>
HICF_RESELECT=0x00000040,
/// <summary>The change in the hot item resulted from a left-click mouse event.</summary>
HICF_LMOUSE=0x00000080,
/// <summary>Version 5.80. Causes the button to switch states.</summary>
/// <summary>Corresponds to SM_CXSMICON, the recommended pixel width of a small icon.</summary>
LIM_SMALL,
/// <summary>Corresponds toSM_CXICON, the default pixel width of an icon.</summary>
LIM_LARGE,
}
/// <summary>
/// Posts messages when the mouse pointer leaves a window or hovers over a window for a specified amount of time. This function calls TrackMouseEvent if
/// it exists, otherwise it emulates it.
/// </summary>
/// <param name="lpEventTrack">
/// <para>Type: <c>LPTRACKMOUSEEVENT</c></para>
/// <para>A pointer to a <c>TRACKMOUSEEVENT</c> structure that contains tracking information.</para>
/// </param>
/// <returns>
/// <para>Type: <c>BOOL</c></para>
/// <para>If the function succeeds, the return value is nonzero .</para>
/// <para>If the function fails, return value is zero. To get extended error information, call <c>GetLastError</c>.</para>
/// <summary>Calculates the dimensions of a rectangle in the client area that contains all the specified controls.</summary>
/// <param name="hWnd">
/// <para>Type: <c><c>HWND</c></c></para>
/// <para>A handle to the window that has the client area to check.</para>
/// </param>
/// <param name="lprc">
/// <para>Type: <c>LPRECT</c></para>
/// <para>A pointer to a <c>RECT</c> structure that receives the dimensions of the rectangle.</para>
/// </param>
/// <param name="lpInfo">
/// <para>Type: <c>const <c>INT</c>*</c></para>
/// <para>
/// A pointer to a null-terminated array of integers that identify controls in the client area. Each control requires a pair of consecutive elements. The
/// first element of the pair must be nonzero and the second element of the pair must be the control identifier. The first pair represents the menu and
/// is ignored. The last element must be zero to identify the end of the array.
/// <summary>Gets the language currently in use by the common controls for a particular process.</summary>
/// <returns>
/// <para>Type: <c><c>LANGID</c></c></para>
/// <para>
/// Returns the language identifier of the language an application has specified for the common controls by calling <c>InitMUILanguage</c>.
/// <c>GetMUILanguage</c> returns the value for the process from which it is called. If <c>InitMUILanguage</c> has not been called or was not called from
/// the same process, <c>GetMUILanguage</c> returns the language-neutral LANGID, <c>MAKELANGID</c>(LANG_NEUTRAL, SUBLANG_NEUTRAL).
/// <c>UINT_PTR</c> subclass ID. This ID and the callback pointer uniquely identify this subclass callback. Note: On 64-bit versions of Windows this is a
/// Ensures that the common control DLL (Comctl32.dll) is loaded, and registers specific common control classes from the DLL. An application must call
/// this function before creating a common control.
/// </summary>
/// <param name="icc">A pointer to an INITCOMMONCONTROLSEX structure that contains information specifying which control classes will be registered.</param>
/// <returns>Returns TRUE if successful, or FALSE otherwise.</returns>
/// <summary>Loads a specified icon resource with a client-specified system metric.</summary>
/// <param name="hinst">
/// <para>Type: <c><c>HINSTANCE</c></c></para>
/// <para>A handle to the module of either a DLL or executable (.exe) file that contains the icon to be loaded. For more information, see <c>GetModuleHandle</c>.</para>
/// <para>To load a predefined icon or a standalone icon file, set this parameter to <c>NULL</c>.</para>
/// </param>
/// <param name="pszName">
/// <para>Type: <c><c>PCWSTR</c></c></para>
/// <para>A pointer to a null-terminated, Unicode buffer that contains location information about the icon to load. It is interpreted as follows:</para>
/// <para>If hinst is <c>NULL</c>, pszName can specify one of two things.</para>
/// <para>If hinst is non-null, pszName can specify one of two things.</para>
/// </param>
/// <param name="lims">
/// <para>Type: <c>int</c></para>
/// <para>The desired metric. One of the following values:</para>
/// <para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>LIM_SMALL</term>
/// <term>Corresponds to SM_CXSMICON, the recommended pixel width of a small icon.</term>
/// </item>
/// <item>
/// <term>LIM_LARGE</term>
/// <term>Corresponds toSM_CXICON, the default pixel width of an icon.</term>
/// </item>
/// </list>
/// </para>
/// </param>
/// <param name="phico">
/// <para>Type: <c><c>HICON</c>*</c></para>
/// <para>When this function returns, contains a pointer to the handle of the loaded icon.</para>
/// </param>
/// <returns>
/// <para>Type: <c><c>HRESULT</c></c></para>
/// <para>Returns S_OK if successful, otherwise an error, including the following value.</para>
/// <para>
/// <list type="table">
/// <listheader>
/// <term>Return code</term>
/// <term>Description</term>
/// </listheader>
/// <item>
/// <term>E_INVALIDARG</term>
/// <term>The contents of the buffer pointed to by pszName do not fit any of the expected interpretations.</term>
/// <summary>Loads an icon. If the icon is not a standard size, this function scales down a larger image instead of scaling up a smaller image.</summary>
/// <param name="hinst">
/// <para>Type: <c><c>HINSTANCE</c></c></para>
/// <para>A handle to the module of either a DLL or executable (.exe) file that contains the icon to be loaded. For more information, see <c>GetModuleHandle</c>.</para>
/// <para>To load a predefined icon or a standalone icon file, set this parameter to <c>NULL</c>.</para>
/// </param>
/// <param name="pszName">
/// <para>Type: <c><c>PCWSTR</c></c></para>
/// <para>A pointer to a null-terminated, Unicode buffer that contains location information about the icon to load.</para>
/// <para>
/// If hinst is non- <c>NULL</c>, pszName specifies the icon resource either by name or ordinal. This ordinal must be packaged by using the
/// <c>MAKEINTRESOURCE</c> macro.
/// </para>
/// <para>
/// If hinst is <c>NULL</c>, pszName specifies either the name of a standalone icon (.ico) file or the identifier of a predefined icon to load. The
/// following identifiers are recognized. To pass these constants to the <c>LoadIconWithScaleDown</c> function, use the <c>MAKEINTRESOURCE</c> macro. For
/// example, to load the IDI_ERROR icon, pass as the pszName parameter and <c>NULL</c> as the hinst parameter.
/// </para>
/// <para>
/// <list type="table">
/// <listheader>
/// <term>Value</term>
/// <term>Meaning</term>
/// </listheader>
/// <item>
/// <term>IDI_APPLICATION</term>
/// <term>Default application icon.</term>
/// </item>
/// <item>
/// <term>IDI_ASTERISK</term>
/// <term>Same as IDI_INFORMATION.</term>
/// </item>
/// <item>
/// <term>IDI_ERROR</term>
/// <term>Hand-shaped icon.</term>
/// </item>
/// <item>
/// <term>IDI_EXCLAMATION</term>
/// <term>Same as IDI_WARNING.</term>
/// </item>
/// <item>
/// <term>IDI_HAND</term>
/// <term>Same as IDI_ERROR.</term>
/// </item>
/// <item>
/// <term>IDI_INFORMATION</term>
/// <term>Asterisk icon.</term>
/// </item>
/// <item>
/// <term>IDI_QUESTION</term>
/// <term>Question mark icon.</term>
/// </item>
/// <item>
/// <term>IDI_WARNING</term>
/// <term>Exclamation point icon.</term>
/// </item>
/// <item>
/// <term>IDI_WINLOGO</term>
/// <term>Windows logo icon.</term>
/// </item>
/// <item>
/// <term>IDI_SHIELD</term>
/// <term>Security Shield icon.</term>
/// </item>
/// </list>
/// </para>
/// </param>
/// <param name="cx">
/// <para>Type: <c>int</c></para>
/// <para>The desired width, in pixels, of the icon.</para>
/// </param>
/// <param name="cy">
/// <para>Type: <c>int</c></para>
/// <para>The desired height, in pixels, of the icon.</para>
/// </param>
/// <param name="phico">
/// <para>Type: <c><c>HICON</c>*</c></para>
/// <para>When this function returns, contains a pointer to the handle of the loaded icon.</para>
/// </param>
/// <returns>
/// <para>Type: <c><c>HRESULT</c></c></para>
/// <para>Returns S_OK if successful, or an error value otherwise, including the following:</para>
/// <para>
/// <list type="table">
/// <listheader>
/// <term>Return code</term>
/// <term>Description</term>
/// </listheader>
/// <item>
/// <term>E_INVALIDARG</term>
/// <term>The contents of the buffer pointed to by pszName do not fit any of the expected interpretations.</term>
/// </item>
/// </list>
/// </para>
/// </returns>
// HRESULT WINAPI LoadIconWithScaleDown( _In_ HINSTANCE hinst, _In_ PCWSTR pszName, _In_ int cx, _In_ int cy, _Out_ HICON *phico); https://msdn.microsoft.com/en-us/library/windows/desktop/bb775703(v=vs.85).aspx
/// <summary>Removes a subclass callback from a window.</summary>
/// <param name="hWnd">
/// <para>Type: <c>HWND</c></para>
/// <para>The handle of the window being subclassed.</para>
/// </param>
/// <param name="pfnSubclass">
/// <para>Type: <c><c>SUBCLASSPROC</c></c></para>
/// <para>
/// A pointer to a window procedure. This pointer and the subclass ID uniquely identify this subclass callback. For the callback function prototype, see <c>SUBCLASSPROC</c>.
/// </para>
/// </param>
/// <param name="uIdSubclass">
/// <para>Type: <c>UINT_PTR</c></para>
/// <para>
/// The <c>UINT_PTR</c> subclass ID. This ID and the callback pointer uniquely identify this subclass callback. Note: On 64-bit versions of Windows this
/// is a 64-bit value.
/// </para>
/// </param>
/// <returns>
/// <para>Type: <c>BOOL</c></para>
/// <para><c>TRUE</c> if the subclass callback was successfully removed; otherwise, <c>FALSE</c>.</para>
/// <summary>Installs or updates a window subclass callback.</summary>
/// <param name="hWnd">
/// <para>Type: <c>HWND</c></para>
/// <para>The handle of the window being subclassed.</para>
/// </param>
/// <param name="pfnSubclass">
/// <para>Type: <c><c>SUBCLASSPROC</c></c></para>
/// <para>
/// A pointer to a window procedure. This pointer and the subclass ID uniquely identify this subclass callback. For the callback function prototype, see <c>SUBCLASSPROC</c>.
/// </para>
/// </param>
/// <param name="uIdSubclass">
/// <para>Type: <c>UINT_PTR</c></para>
/// <para>
/// The subclass ID. This ID together with the subclass procedure uniquely identify a subclass. To remove a subclass, pass the subclass procedure and
/// this value to the <c>RemoveWindowSubclass</c> function. This value is passed to the subclass procedure in the uIdSubclass parameter.
/// </para>
/// </param>
/// <param name="dwRefData">
/// <para>Type: <c>DWORD_PTR</c></para>
/// <para>
/// <c>DWORD_PTR</c> to reference data. The meaning of this value is determined by the calling application. This value is passed to the subclass
/// procedure in the dwRefData parameter. A different dwRefData is associated with each combination of window handle, subclass procedure and uIdSubclass.
/// </para>
/// </param>
/// <returns>
/// <para>Type: <c>BOOL</c></para>
/// <para><c>TRUE</c> if the subclass callback was successfully installed; otherwise, <c>FALSE</c>.</para>
/// [ <c>ShowHideMenuCtl</c> is available for use in the operating systems specified in the Requirements section. It may be altered or unavailable in
/// subsequent versions.]
/// </para>
/// <para>
/// Sets or removes the specified menu item's check mark attribute and shows or hides the corresponding control. The function adds a check mark to the
/// specified menu item if it does not have one and then displays the corresponding control. If the menu item already has a check mark, the function
/// removes the check mark and hides the corresponding control.
/// </para>
/// </summary>
/// <param name="hWnd">
/// <para>Type: <c><c>HWND</c></c></para>
/// <para>A handle to the window that contains the menu and controls.</para>
/// </param>
/// <param name="uFlags">
/// <para>Type: <c><c>UINT_PTR</c></c></para>
/// <para>The identifier of the menu item to receive or lose a check mark.</para>
/// </param>
/// <param name="lpInfo">
/// <para>Type: <c><c>LPINT</c></c></para>
/// <para>
/// A pointer to an array that contains pairs of values. The second value in the first pair must be the handle to the application's main menu. Each
/// subsequent pair consists of a menu item identifier and a control window identifier. The function searches the array for a value that matches uFlags
/// and, if the value is found, checks or unchecks the menu item and shows or hides the corresponding control.
/// <summary>The set of bit flags that indicate which common control classes will be loaded from the DLL when calling <see cref="InitCommonControlsEx(ref INITCOMMONCONTROLSEX)"/>.</summary>
/// <para>An <c>NMHDR</c> structure that contains additional information about this notification.</para>
/// </summary>
publicNMHDRhdr;
/// <summary>
/// <para>Type: <c><c>HDC</c></c></para>
/// <para>The device context to draw to.</para>
/// </summary>
publicIntPtrhDC;
/// <summary>
/// <para>Type: <c><c>LPCWSTR</c></c></para>
/// <para>The string to draw.</para>
/// </summary>
publicstringlpString;
/// <summary>
/// <para>Type: <c>int</c></para>
/// <para>Length of lpString.</para>
/// </summary>
publicintnCount;
/// <summary>
/// <para>Type: <c>LPRECT</c></para>
/// <para>The rect to draw in.</para>
/// </summary>
publicIntPtrlpRect;
/// <summary>
/// <para>Type: <c><c>UINT</c></c></para>
/// <para>
/// One or more of the DT_* flags. For more information, see the description of the uFormat parameter of the <c>DrawText</c> function. This may be <c>NULL</c>.
/// </para>
/// </summary>
publicuintuFormat;
/// <summary>
/// <para>Type: <c><c>BOOL</c></c></para>
/// <para>Whether the text is a link.</para>
/// </summary>
[MarshalAs(UnmanagedType.Bool)]
publicboolfLink;
}
/// <summary>Contains information used with key notification messages.</summary>