# CCombo Class

A `Combobox` combines the features of a ListBox and a Edit control. The user can enter a new value, as with a Edit control, or the user can select an existing value, as with a ListBox.

See: About Combo Boxes

Include file: CCombo.inc

Name | Description
--- | ---
AddString | Adds a string to the list box of a combo box.
CalcHorizontalExtent | Calculates the size, in logical units, of the widest string item.
DeleteString | Deletes a string in the list box of a combo box.
Dir | Adds the names of directories and files that match a specified string and set of file attributes.
Disable | Disables a combobox.
Enable | Enables a combobox.
FindString | Searches the list box of a combo box for an item beginning with the characters in a specified string.
FindStringExact | Finds the first list box string in a combo box that matches the string specified in the start parameter.
GetComboBoxInfo | Retrieves information about the specified combo box.
GetCount | Retrieves the number of items in the list box of a combo box.
GetCueBannerText | Gets the cue banner text displayed in the edit control of a combo box.
GetCurSel | Retrieves the index of the currently selected item, if any, in the list box of a combo box.
GetDroppedControlRect | Retrieves the screen coordinates of a combo box in its dropped-down state.
GetDroppedState | Determines whether the list box of a combo box is dropped down.
GetDroppedWidth | Retrieves the minimum allowable width, in pixels, of the list box of a combo box with the CBS_DROPDOWN or CBS_DROPDOWNLIST style.
GetEditBoxHandle | Retrieves the handle to the edit box of the combobox.
GetEditSel | Gets the starting and ending character positions of the current selection in the edit control of a combo box.
GetExtendedUI | Determines whether a combo box has the default user interface or the extended user interface.
GetHorizontalExtent | Retrieves from a combo box the width, in pixels, by which the list box can be scrolled horizontally (the scrollable width). This is applicable only if the list box has a horizontal scroll bar.
GetItemData | Retrieves the application-supplied value associated with the specified item in the combo box.
GetItemHeight | Retrieves the height of list items in a combo box.
GetLbText | Gets a string from the list of a combo box.
GetLbTextLen | Retrieve the length, in characters, of a string in the list of a combo box.
GetListBoxHandle | Retrieves the handle to the drop-down list of the combobox.
GetLocale | Retrieves the current locale of the combo box.
GetMinVisible | Gets the minimum number of visible items in the drop-down list of a combo box.
GetSelCount | Returns the number of selected items, if any, in the list box of a combo box.
GetState | Returns TRUE if the specified item is selected; FALSE, otherwise.
GetText | Retrieves the text in a combobox control.
GetTextLength | Retrieves the length of a text item in a combobox control.
GetTopIndex | Retrieves the zero-based index of the first visible item in the list box portion of a combo box.
HideDropDown | Hides the list box of a combo box that has the CBS_DROPDOWN or CBS_DROPDOWNLIST style.
InsertString | Inserts a string into the list box of a combo box.
LimitText | Limits the length of the text the user may type into the edit control of a combo box.
RemoveDarkMode | Removes the control dark mode.
ReplaceText | Replaces the text of an item in a combobox control.
ResetContent | Removes all items from the list box and edit control of a combo box.
SelectString | 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.
SetCueBannerText | Gets the cue banner text displayed in the edit control of a combo box.
SetCurSel | Selects a string in the list of a combo box. If necessary, the list scrolls the string into view.
SetDarkMode | Sets the control dark mode.
SetDroppedWidth | Sets the maximum allowable width, in pixels, of the list box of a combo box with the CBS_DROPDOWN or CBS_DROPDOWNLIST style.
SetEditSel | Selects characters in the edit control of a combo box.
SetExtendedUI | Selects either the default user interface or the extended user interface for a combo box that has the CBS_DROPDOWN or CBS_DROPDOWNLIST style.
SetHorizontalExtent | Sets the width, in pixels, by which a list box can be scrolled horizontally.
SetItemData | Sets the value associated with the specified item in a combo box.
SetItemHeight | Sets the height of list items or the selection field in a combo box.
SetLocale | Sets the current locale of the combo box.
SetMinVisible | Sets the minimum number of visible items in the drop-down list of a combo box.
SetText | Sets the text of a combobox control.
SetTopIndex | Ensures that a particular item is visible in the list box of a combo box.
ShowDropDown | Shows the list box of a combo box that has the CBS_DROPDOWN or CBS_DROPDOWNLIST style.
UnselectString | Unselects any current selection.

# CComboEx Class

`ComboBoxEx` controls are combo box controls that provide native support for item images. To make item images easily accessible, the control provides image list support. By using this control, you can provide the functionality of a combo box without having to manually draw item graphics.

Include file: CCombo.inc

Name | Description
--- | ---
DeleteItem | Removes an item from a ComboBoxEx control.
GetComboControl | Returns the handle to the combo box control within the ComboBoxEx control.
GetEditControl | Returns the handle to the edit control within the ComboBoxEx control.
GetExtendedStyle | Returns a DWORD value that contains the ComboBoxEx control extended styles in use for the control.
GetImageList | Retrieves the handle to an image list assigned to a ComboBoxEx control.
GetItem | Retrieves item information for a given ComboBoxEx item.
HasEditChanged | Determines whether or not the user has changed the text of a ComboBoxEx edit control.
InsertItem | Returns the index at which the new item was inserted if successful, or -1 otherwise.
RemoveDarkMode | Removes the control dark mode.
SetExtendedStyle | Sets extended styles within a ComboBoxEx control.
SetImageList | Returns the handle to the image list previously associated with the control, or returns NULL if no image list was previously set.
SetItem | Sets the attributes for an item in a ComboBoxEx control.
SetWindowTheme | Sets the visual style of a ComboboxEx control.
SetDarkMode | Sets the control dark mode.

### AddString

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.

    FUNCTION AddString (BYVAL hCombo AS HWND, BYVAL pwszText AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
pwszText | A pointer to the null-terminated string to be added. If you create the combo box with an owner-drawn style but without the CBS_HASSTRINGS style, the value of the pwszText parameter is stored as item data rather than the string it would otherwise point to. The item data can be retrieved or modified by sending the CB_GETITEMDATA or CB_SETITEMDATA message.

#### Return value

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.

#### Remarks

If you create an owner-drawn combo box with the CBS_SORT style but without the CBS_HASSTRINGS style, the WM_COMPAREITEM 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 message.

If the combo box has WS_HSCROLL style and you add a string wider than the combo box, send a LB_SETHORIZONTALEXTENT message to ensure the horizontal scroll bar appears.

Comclt32.dll version 5.0 or later: If CBS_LOWERCASE or CBS_UPPERCASE is set, the Unicode version of CB_ADDSTRING alters the string. If using read-only global memory, this causes the application to fail.

#### Usage example

    CCombo.AddString(hCombo, "New text")

### CalcHorizontalExtent

Calculates the size, in logical units, of the widest string item.

    FUNCTION CalcHorizontalExtent (BYVAL hCombo AS HWND) AS LONG

#### Usage example

    CCombo.CalcHorizontalExtent(hCombo)

### DeleteString

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.

    FUNCTION DeleteString (BYVAL hCombo AS HWND, BYVAL index AS LONG) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the string to delete.

#### Return value

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.

#### Remarks

If you create the combo box with an owner-drawn style but without the CBS_HASSTRINGS style, the system sends a WM_DELETEITEM message to the owner of the combo box so the application can free any additional data associated with the item.

#### Usage example

    CCombo.DeleteString(hCombo, 4)

### Dir

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.

    FUNCTION Dir (BYVAL hCombo AS HWND, BYVAL attr AS UINT, BYVAL pwszFileSpec AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
attr | The attributes of the files or directories to be added to the combo box. This parameter can be one or more of the following values (see list below).
pwszFileSpec | Pointer to a null-terminated string that specifies an absolute path, relative path, or file name. An absolute path can begin with a drive letter (for example, d:) or a UNC name (for example, \machinename). If the string specifies a file name or directory that has the attributes specified by the attr parameter, the file name or directory is added to the list. If the file name or directory name contains wildcard characters (? or ), all files or directories that match the wildcard expression and have the attributes specified by the attr* parameter are added to the list displayed in the combo box.

Attribue | Meaning
--- | ---
DDL_ARCHIVE | Includes archived files.
DDL_DIRECTORY | Includes subdirectories, which are enclosed in square brackets ([ ]).
DDL_DRIVES | All mapped drives are added to the list. Drives are listed in the form [-x-], where x is the drive letter.
DDL_EXCLUSIVE | Includes only files with the specified attributes. By default, read/write files are listed even if DDL_READWRITE is not specified.
DDL_HIDDEN | Includes hidden files.
DDL_READONLY | Includes read-only files.
DDL_READWRITE | Includes read/write files with no additional attributes. This is the default.
DDL_SYSTEM | Includes system files.

#### Return value

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.

#### Remarks

If attr includes the DDL_DIRECTORY flag and pwszFileSpec specifies all the subdirectories of a first-level directory, such as C:*, 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.

### Disable

Disables the combobox. Returns FALSE if the combobox was previously disabled; otherwise TRUE.

    FUNCTION Disable (BYVAL hCombo AS HWND) AS BOOLEAN

#### Usage example

    CCombo.Disable(hCombo)

### Enable

Enables the combobox. Returns FALSE if the combobox was previously enabled; otherwise TRUE.

    FUNCTION Enable (BYVAL hCombo AS HWND) AS BOOLEAN

#### Usage example

    CCombo.Enable(hCombo)

### FindString

Searches the list box of a combo box for an item beginning with the characters in a specified string.

    FUNCTION FindString (BYVAL hCombo AS HWND, BYVAL start AS LONG, BYVAL pwszText AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
start | The zero-based index of the item preceding the first item to be searched. When the search reaches the bottom of the list box, it continues from the top of the list box back to the item specified by the start parameter. If start is -1, the entire list box is searched from the beginning.
pwszText | A pointer to the null-terminated string that contains the characters for which to search. The search is not case sensitive, so this string can contain any combination of uppercase and lowercase letters.

#### Return value

The return value is the zero-based index of the matching item. If the search is unsuccessful, it is CB_ERR.

#### Remarks

If you create the combo box with an owner-drawn style but without the CBS_HASSTRINGS style, what the CB_FINDSTRING message does depends on whether your application uses the CBS_SORT style. If you use the CBS_SORT style, WM_COMPAREITEM 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 pwszText parameter.

#### Usage example

    CCombo.FindString(hCombo, 0, "String text")

### FindStringExact

Finds the first list box string in a combo box that matches the string specified in the start parameter.

    FUNCTION FindStringExact (BYVAL hCombo AS HWND, BYVAL start AS LONG, BYVAL pwszText AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
start | The zero-based index of the item preceding the first item to be searched. When the search reaches the bottom of the list box, it continues from the top of the list box back to the item specified by the wParam parameter. If wParam is -1, the entire list box is searched from the beginning.
pwszText | A pointer to the null-terminated string for which to search. The search is not case sensitive, so this string can contain any combination of uppercase and lowercase letters.

#### Return value

The return value is the zero-based index of the matching item. If the search is unsuccessful, it is CB_ERR.

#### Remarks

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 style, the functionality of CB_FINDSTRINGEXACT message depends on whether your application uses the CBS_SORT style. If you use the CBS_SORT style, WM_COMPAREITEM 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 pwszText parameter.

#### Usage example

    CCombo.FindStringExact(hCombo, 0, "String text")

### GetComboBoxInfo

Finds the first list box string in a combo box that matches the string specified in the start parameter.

    FUNCTION GetComboBoxInfo (BYVAL hCombo AS HWND, BYVAL pcbi AS COMBOBOXINFO PTR) AS BOOLEAN
    FUNCTION GetComboBoxInfo (BYVAL hCombo AS HWND, BYREF cbi AS COMBOBOXINFO) AS BOOLEAN
    FUNCTION GetComboBoxInfo (BYVAL hCombo AS HWND) AS COMBOBOXINFO

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
pcbi | A pointer to a COMBOBOXINFO structure that receives the information.
cbi | A COMBOBOXINFO structure that receives the information.

#### Return value

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.

#### Remarks

This message is equivalent to GetComboBoxInfo.

#### Usage examples

    DIM cbi AS COMBOBOXINFO
    CCombo.GetComboBoxInfo(hCombo, @cbi)
    CCombo.GetComboBoxInfo(hCombo, cbi)
    cbi = CCombo.GetComboBoxInfo(hCombo)

### GetCount

Gets the number of items in the list box of a combo box.

    FUNCTION GetCount (BYVAL hCombo AS HWND) AS LONG

#### Return value

The return value is the number of items in the list box. If an error occurs, it is CB_ERR.

#### Remarks

The index is zero-based, so the returned count is one greater than the index value of the last item.

#### Usage example

    DIM count AS LONG = CCombo.GetCount(hCombo)

### GetCueBannerText

Gets the cue banner text displayed in the edit control of a combo box.

    FUNCTION GetCueBannerText (BYVAL hCombo AS HWND, BYVAL pwszText AS WSTRING PTR, BYVAL cchText AS DWORD) AS BOOLEAN
    FUNCTION GetCueBannerText (BYVAL hCombo AS HWND, BYVAL cchText AS DWORD) AS DWSTRING

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
pwszText | A pointer to a Unicode string buffer that receives the cue banner text. The calling application is responsible for allocating the memory for the buffer. The buffer size must be equal to the length of the cue banner string in characters, plus 1—for the terminating NULL character.
cchText | The size of the buffer pointed to by pwszText in characters.

#### Return value

Returns TRUE if successful, or an error value otherwise.

#### Usage example

    DIM dwsText AS DWSTRING = CCombo.GetCueBannerText(hCombo, 260)

### GetCurSel

Retrieves the index of the currently selected item, if any, in the list box of a combo box.

    FUNCTION GetCurSel (BYVAL hCombo AS HWND) AS LONG

#### Return value

The return value is the zero-based index of the currently selected item. If no item is selected, it is CB_ERR.

#### Usage example

    DIM idx AS LONG = CCombo.GetCurSel(hCombo)

### GetDroppedControlRect

Retrieves the screen coordinates of a combo box in its dropped-down state

    FUNCTION GetDroppedControlRect (BYVAL hCombo AS HWND, BYVAL prc AS RECT PTR)
    FUNCTION GetDroppedControlRect (BYVAL hCombo AS HWND, BYREF rc AS RECT)
    FUNCTION GetDroppedControlRect (BYVAL hCombo AS HWND) AS RECT

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
prc | A pointer to the RECT structure that receives the coordinates of the combo box in its dropped-down state.
rc | A RECT structure that receives the coordinates of the combo box in its dropped-down state.

#### Return value

If the message succeeds, the return value is nonzero.

If the message fails, the return value is zero.

#### Usage examples

    DIM rc AS RECT
    CCombo.GetDroppedControlRect(hCombo, @rc)
    CCombo.GetDroppedControlRect(hCombo, rc)
    rc = CCombo.GetDroppedControlRect(hCombo)

### GetDroppedState

Determines whether the list box of a combo box is dropped down.

    FUNCTION GetDroppedState (BYVAL hCombo AS HWND) AS BOOLEAN

#### Return value

If the list box is visible, the return value is TRUE; otherwise, it is FALSE.

#### Usage example

    DIM state AS BOOLEAN = CCombo.GetDroppedState(hCombo)

### GetDroppedWidth

Retrieves the minimum allowable width, in pixels, of the list box of a combo box with the CBS_DROPDOWN or CBS_DROPDOWNLIST style.

    FUNCTION GetDroppedWidth (BYVAL hCombo AS HWND) AS LONG

#### Usage example

    DIM nWidth AS LONG = CCombo.GetDroppedWidth(hCombo)

#### Return value

If the message succeeds, the return value is the width, in pixels.

If the message fails, the return value is CB_ERR.

#### 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.

### GetEditBoxHandle

Retrieves the handle to the edit box of the combobox.

    FUNCTION GetEditBoxHandle (BYVAL hCombo AS HWND) AS HWND

#### Return value

Returns the handle to the edit box of the combobox.

#### Usage example

    DIM hEdit AS HWND = CCombo.GetEditBoxHandle(hCombo)

### GetEditSel

Gets the starting and ending character positions of the current selection in the edit control of a combo box.

    FUNCTION GetEditSel (BYVAL hCombo AS HWND, BYVAL pdwStart AS DWORD PTR, BYVAL pdwEnd AS DWORD PTR)
    FUNCTION GetEditSel (BYVAL hCombo AS HWND, BYREF dwStart AS DWORD, BYREF dwEnd AS DWORD)

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
pdwStart | A pointer to a DWORD value that receives the starting position of the selection. This parameter can be NULL.
pdwEnd | A pointer to a DWORD value that receives the ending position of the selection. This parameter can be NULL.
dwStart | A DWORD variable that receives the starting position of the selection.
dwEnd | A DWORD variable that receives the ending position of the selection.

#### Return value

The return value is a zero-based DWORD value with the starting position of the selection in the LOWORD and with the ending position of the first character after the last selected character in the HIWORD.

#### Usage examples

    DIM dwStart AS DWORD, dwEnd AS DWORD
    CCombo.GetEditSel(hCombo, @dwStart, @dwEnd)
    CCombo.GetEditSel(hCombo, dwStart, dwEnd)

### GetExtendedUI

Determines whether a combo box has the default user interface or the extended user interface.

    FUNCTION GetExtendedUI (BYVAL hCombo AS HWND) AS BOOLEAN

#### Return value

If the combo box has the extended user interface, the return value is TRUE; otherwise, it is FALSE.

#### 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.

#### Usage example

    DIM b AS BOOLEAN = CCombo.GetExtendedUI(hCombo)

### GetHorizontalExtent

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.

    FUNCTION GetHorizontalExtent (BYVAL hCombo AS HWND) AS LONG

#### Return value

The return value is the scrollable width, in pixels.

#### Usage example

    DIM extent AS LONG = CCombo.GetHorizontalExtent(hCombo)

### GetItemData

Retrieves the application-supplied value associated with the specified item in the combo box.

    FUNCTION GetItemData (BYVAL hCombo AS HWND, BYVAL index AS LONG) AS LONG_PTR

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the item.

#### Return value

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 style, the return value is the value contained in the lParam parameter of the CB_ADDSTRING or CB_INSERTSTRING 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 message.

#### Usage example

    DIM dat AS LONG_PTR = CCombo.GetItemData(hCombo, 5)

### GetItemHeight

Determines the height of list items or the selection field in a combo box.

    FUNCTION GetItemHeight (BYVAL hCombo AS HWND) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control whose height is to be retrieved. This parameter must be -1 to retrieve the height of the selection field. It must be zero to retrieve the height of list items, unless the combo box has the CBS_OWNERDRAWVARIABLE style. In that case, the wParam parameter is the zero-based index of a specific list item.

#### Usage example

    DIM nHeight AS LONG = CCombo.GetItemHeight(hCombo, 5)

### GetLbText

Gets a string from the list of a combo box.

    FUNCTION GetLbText (BYVAL hCombo AS HWND, BYVAL index AS LONG) AS DWSTRING

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the item.

#### Usage example

    DIM dwsText AS DWSTRING = CCombo.GetLbText(hCombo, 5)

### GetLbTextLen

Gets the length, in characters, of a string in the list of a combo box.

    FUNCTION GetLbTextLen (BYVAL hCombo AS HWND, BYVAL index AS LONG) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the item.

#### Return value

The return value is the length of the string, in characters, excluding the terminating null character.

If the index parameter does not specify a valid index, the return value is CB_ERR.

#### Remarks

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, LB_GETTEXT, or CB_GETLBTEXT messages, or the GetWindowText function.

#### Usage example

    DIM nLen AS LONG = CCombo.GetLbTextLen(hCombo, 5)

### GetListBoxHandle

Retrieves the handle to the drop-down list of the combobox

    FUNCTION GetListBoxHandle (BYVAL hCombo AS HWND) AS HWND

#### Return value

Returns the handle of the list box control of the combobox.

#### Usage example

    DIM hLb AS HWBD = CCombo.GetListBoxHandle(hCombo)

### Getocale

Retrieves 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.

    FUNCTION Getocale (BYVAL hCombo AS HWND) AS LONG

#### Return value

The return value specifies the current locale of the combo box. The HIWORD contains the country/region code and the LOWORD contains the language identifier.

#### Remarks

The language identifier is made up of a sublanguage identifier and a primary language identifier. The PRIMARYLANGID macro obtains the primary language identifier and the SUBLANGID macro obtains the sublanguage identifier.

#### Usage example

    DIM lc AS LONG = CCombo.GetLocale(hCombo)

### GetMinVisible

Gets the minimum number of visible items in the drop-down list of a combo box.

    FUNCTION GetMinVisible (BYVAL hCombo AS HWND) AS LONG

#### Return value

The return value is the minimum number of visible items.

#### Remarks

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.

To use CB_GETMINVISIBLE, the application must specify comctl32.dll version 6 in the manifest.

#### Usage example

    DIM minVisible AS LONG = CCombo.GetMinVisible(hCombo)

### GetSelCount

Returns the number of selected items, if any, in the list box of a combo box.

    FUNCTION GetSelCount (BYVAL hCombo AS HWND) AS LONG

#### Return value

Return 1 or 0.

#### Usage example

    DIM count AS LONG = CCombo.GetSelCount(hCombo)

### GetState

Returns TRUE if the specified item is selected; FALSE, otherwise.

    FUNCTION GetState (BYVAL hCombo AS HWND, BYVAL item AS LONG) AS BOOLEAN

#### Usage example

    DIM bState AS BOOLEAN = CCombo.GetState(hCombo)

### GetText

Retrieves the text of the edit control in a combobox or the text of an item in the list.

    FUNCTION GetText (BYVAL hCombo AS HWND) AS DWSTRING
    FUNCTION GetText (BYVAL hCombo AS HWND, BYVAL index AS LONG) AS DWSTRING

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the item.

#### Usage examples

    DIM dwsText AS DWSTRING = CCombo.GetText(hCombo)
    DIM dwsText AS DWSTRING = CCombo.GetText(hCombo, 5)

### GetTextLength

Retrieves the length of the text of the edit control in a combobox or the text of an item in the list.

    FUNCTION GetTextLength (BYVAL hCombo AS HWND) AS LONG
    FUNCTION GetTextLength (BYVAL hCombo AS HWND, BYVAL index AS LONG) AS DWSTRING

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the item.

#### Usage examples

    DIM mLen AS LONG = CCombo.GetTextLenth(hCombo)
    DIM mLen AS LONG = CCombo.GetTextLenth(hCombo, 5)

### GetTopIndex

Retrieves the zero-based index of the first visible item in the list box portion of a combo box. Initially, the item with index 0 is at the top of the list box, but if the list box contents have been scrolled, another item may be at the top.

    FUNCTION GetTopIndex (BYVAL hCombo AS HWND) AS LONG

#### Return value

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.

#### Usage example

    DIM idx AS LONG = CCombo.GetTopIndex(hCombo)

### HideDropDown

Hides the list box of a combo box that has the CBS_DROPDOWN or CBS_DROPDOWNLIST style.

    SUB HideDropDown (BYVAL hCombo AS HWND)

#### Usage example

    CCombo.HideDropDown(hCombo)

### InsertString

Inserts a string into the list box of a combo box. Unlike the AddString methods, this method does not cause a list with the CBS_SORT style to be sorted.

    FUNCTION InsertString (BYVAL hCombo AS HWND, BYVAL index AS LONG, BYVAL pwszText AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the position at which to insert the string. If this parameter is -1, the string is added to the end of the list.
pwszText | A pointer to the null-terminated string to be inserted. If you create the combo box with an owner-drawn style but without the CBS_HASSTRINGS style, the value of the pwszText parameter is stored rather than the string to which it would otherwise point.

#### Return value

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 style and you insert a string wider than the combo box, you should send a LB_SETHORIZONTALEXTENT message to ensure the horizontal scroll bar appears.

#### Usage example

    CCombo.InsertString(hCombo, 4, "New string")

### LimitText

Limits the length of the text the user may type into the edit control of a combo box.

    SUB LimitText (BYVAL hCombo AS HWND, BYVAL chLimit AS LONG)

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
chLimit | The maximum number of characters the user can enter, not including the terminating null character. If this parameter is zero, the text length is limited to &h7FFFFFFE characters.

## Remarks

If the combo box does not have the CBS_AUTOHSCROLL 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 characters.

#### Usage example

    CCombo.LimitText(hCombo, 260)

### RemoveDarkMode

Removes the control dark mode.

    FUNCTION RemoveDarkMode (BYVAL hCombo AS HWND) AS HRESULT
    FUNCTION RemoveDarkMode (BYVAL hComboEx AS HWND) AS HRESULT

#### Return value

If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.

#### Usage example

    CCombo.RemoveDarkMode(hCombo)
    CCombo.RemoveDarkMode(hComboEx)

### ReplaceText

Replaces the text of an item in a combobox control.

    FUNCTION ReplaceText (BYVAL hCombo AS HWND, BYVAL index AS LONG, BYVAL pwszText AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the item.
pwszText | A pointer to the null-terminated string to replace the text of thne item.

#### Remarks

As this control has not a replace message, this function first deletes the specified string and the inserts a new one with the new text.

#### Usage example

    CCombo.ReplaceText(hCombo, 5 , "New text")

### ResetContent

Removes all items from the list box and edit control of a combo box.

    FUNCTION ResetContent (BYVAL hCombo AS HWND)

#### Return value

This message always returns CB_OKAY.

#### Remarks

If you create the combo box with an owner-drawn style but without the CBS_HASSTRINGS style, the owner of the combo box receives a WM_DELETEITEM message for each item in the combo box.

#### Usage example

    CCombo.ResetContent(hCombo)

### SelectString

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.

    FUNCTION SelectString (BYVAL hCombo AS HWND, BYVAL index AS LONG, BYVAL pwszText AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | The zero-based index of the item preceding the first item to be searched. When the search reaches the bottom of the list, it continues from the top of the list back to the item specified by the index parameter. If index is -1, the entire list is searched from the beginning.
pwszText | A pointer to the null-terminated string that contains the characters for which to search. The search is not case sensitive, so this string can contain any combination of uppercase and lowercase letters.

#### Return value

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.

#### Remarks

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 style, what the CB_SELECTSTRING message does depends on whether you use the CBS_SORT style. If the CBS_SORT style is used, the system sends WM_COMPAREITEM 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 pwszText parameter.

#### Usage example

    CCombo.SelectString(hCombo, -1 , "Text to find")

### SetCueBannerText

Sets the cue banner text that is displayed for the edit control of a combo box.

    FUNCTION SetCueBannerText (BYVAL hCombo AS HWND, BYVAL pwszText AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
pwszText | A pointer to a null-terminated Unicode string buffer that contains the text.

#### Return value

Returns 1 if successful, or an error value otherwise.

#### Remarks

The cue banner is text that is displayed in the edit control of a combo box when there is no selection.

#### Usage example

    CCombo.SetCueBannerText(hCombo, "Cue banner text")

### SetCurSel

Selects a string in the list of a combo box. If necessary, the list scrolls the string into view. The text in the edit control of the combo box changes to reflect the new selection, and any previous selection in the list is removed.

    FUNCTION SetCurSel (BYVAL hCombo AS HWND, BYVAL index AS LONG) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | Specifies the zero-based index of the string to select. If this parameter is -1, any current selection in the list is removed and the edit control is cleared.

#### Return value

If the message is successful, the return value is the index of the item selected. If index 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.

#### Usage example

    CCombo.SeCurSel(hCombo, 10)

### SetDarkMode

Sets the control dark mode.

    FUNCTION SetDarkMode (BYVAL hCombo AS HWND) AS HRESULT
    FUNCTION SetDarkMode (BYVAL hComboEx AS HWND) AS HRESULT

#### Return value

If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.

#### Usage example

    CCombo.SetDarkMode(hCombo)
    CCombo.SetDarkMode(hComboEx)

### SetDroppedWidth

Sets the maximum allowable width, in pixels, of the list box of a combo box with the CBS_DROPDOWN or CBS_DROPDOWNLIST style.

    FUNCTION SetDroppedWidth (BYVAL hCombo AS HWND, BYVAL nWidth AS LONG) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
nWidth | The minimum allowable width of the list box, in pixels.

#### Return value

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.

#### Usage example

    CCombo.SetDroppedWidth(hCombo, 200)

### SetEditSel

Selects characters in the edit control of a combo box.

    FUNCTION SetEditSel (BYVAL hCombo AS HWND, BYVAL nStart AS SHORT, BYVAL nEnd AS SHORT) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
nStart | The starting popsition.
nEmd | The endimg popsition.

#### Return value

If the message succeeds, the return value is TRUE. If the message is sent to a combo box with the CBS_DROPDOWNLIST style, it is CB_ERR.

#### 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.

#### Usage example

    CCombo.SetEditSel(hCombo, 10, 30)

### SetExtendedUI

Selects either the default user interface or the extended user interface for a combo box that has the CBS_DROPDOWN or CBS_DROPDOWNLIST style.

    FUNCTION SetExtendedUI (BYVAL hCombo AS HWND, BYVAL flag AS BOOLEAN) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
flag | A BOOL that specifies whether the combo box uses the extended UI (TRUE) or the default UI (FALSE).

#### Return value

If the operation succeeds, the return value is CB_OKAY. If an error occurs, it is CB_ERR.

#### 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.

#### Usage example

    CCombo.SetExtendedUI(hCombo, TRUE)

### SetHorizontalExtent

Sets the width, in pixels, by which a list box can be scrolled horizontally (the scrollable width). If the width of the list box is smaller than this value, the horizontal scroll bar horizontally scrolls items in the list box. If the width of the list box is equal to or greater than this value, the horizontal scroll bar is hidden or, if the combo box has the CBS_DISABLENOSCROLL style, disabled.

    FUNCTION SetHorizontalExtent (BYVAL hCombo AS HWND, BYVAL nWidth AS LONG)

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
nWidth | Specifies the scrollable width of the list box, in pixels.

#### Usage example

    CCombo.SetHorizontalExtent(hCombo, 300)

### SetItemData

Sets the value associated with the specified item in a combo box.

    FUNCTION SetItemData (BYVAL hCombo AS HWND, BYVAL index AS LONG, BYVAL nData AS LONG_PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | Specifies the item’s zero-based index.
nData | Specifies the new value to be associated with the item.

#### Usage example

    CCombo.SetItemData(hCombo, 3, <data>)

### SetItemHeight

Sets the height of list items or the selection field in a combo box.

    FUNCTION SetItemHeight (BYVAL hCombo AS HWND, BYVAL index AS LONG, BYVAL nHeight AS LONG) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | Specifies the component of the combo box for which to set the height. This parameter must be 1 to set the height of the selection field. It must be zero to set the height of list items, unless the combo box has the CBS_OWNERDRAWVARIABLE style. In that case, the index parameter is the zero-based index of a specific list item.
nHeight | Specifies the height, in pixels, of the combo box component identified by index.

#### Usage example

    CCombo.SetItemHeight(hCombo, 1, 50)

### SetLocale

Sets 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. The return value is the previous locale identifier. If lcid specifies a locale not installed on the system, the return value is CB_ERR and the current combo box locale is not changed.

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
lcid | Specifies the locale identifier for the combo box to use for sorting when adding text.

#### Usage example

    CCombo.SetLocale(hCombo, 1, <locale identifier>)

#### Return value

The return value is the previous locale identifier. If lcid specifies a locale not installed on the system, the return value is CB_ERR and the current combo box locale is not changed.

#### Remarks

Use the MAKELCID macro to construct a locale identifier and the MAKELANGID macro to construct a language identifier. The language identifier is made up of a primary language identifier and a sublanguage identifier.

#### Usage example

    CCombo.SetLocale(hCombo, 1, <locale identifier>)

### SetMinVisible

Sets the minimum number of visible items in the drop-down list of a combo box.

    FUNCTION SetMinVisible (BYVAL hCombo AS HWND, BYVAL iMinVisible AS LONG) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
iMinVisible | Specifies the minimum number of visible items.

#### Return value

If the message is successful, the return value is TRUE. Otherwise the return value is FALSE.

#### Remarks

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.

To use CB_SETMINVISIBLE, the application must specify comctl32.dll version 6 in the manifest.

#### Usage example

    CCombo.SetMinVisible(hCombo, 20)

### SetText

Sets the text of a combobox control.

    FUNCTION SetText (BYVAL hCombo AS HWND, BYVAL pwszText AS WSTRING PTR) AS BOOLEAN
    FUNCTION SetText (BYVAL hCombo AS HWND, BYVAL index AS LONG, BYVAL pwszText AS WSTRING PTR) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
pwszText | A pointer to the null-terminated string to be inserted. If you create the combo box with an owner-drawn style but without the CBS_HASSTRINGS style, the value of the lParam parameter is stored rather than the string to which it would otherwise point.
index | The zero-based index of the item.

#### Return value

If the message is successful, the return value is TRUE. Otherwise the return value is FALSE.

The overloaded function that accepts an index to a item returns the index of the position at which the string was inserted. If an error occurs, the return value is CB_ERR.

#### Remarks

The overloaded function that accepts an index to a item does not replace the existing text, but deletes the existing string and inserts a new one.

#### Usage examples

    CCombo.SetText(hCombo, "New text")
    CCombo.SetText(hCombo, 5, "New text")

### SetTopIndex

Ensures that a particular item is visible in the list box of a combo box. The system scrolls the list box contents so that either the specified it. If the message is successful, the return value is zero. If the message fails, the return value is CB_ERR.

    FUNCTION SetTopIndex (BYVAL hCombo AS HWND, BYVAL index AS LONG) AS LONG

Parameter | Description
--- | ---
hCombo | The handle of the combo box control.
index | Specifies the zero-based index of the list item.

#### Return value

If the message is successful, the return value is zero.

If the message fails, the return value is CB_ERR.

#### Usage example

    CCombo.SetTopIndex(hCombo, 10)

### ShowDropDown

Shows the list box of a combo box that has the CBS_DROPDOWN or CBS_DROPDOWNLIST style.

    SUB ShowDropDown (BYVAL hCombo AS HWND)

#### Usage example

    CCombo.ShowDropDown(hCombo)

### UnselectString

Unselects any current selection.

    FUNCTION UnselectString (BYVAL hCombo AS HWND) AS LONG

#### Usage example

    CCombo.UnselectString(hCombo)

### DeleteItem

Removes an item from a ComboBoxEx control.

    FUNCTION DeleteItem (BYVAL hComboEx AS HWND, BYVAL iIndex AS LONG) AS LONG

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.
iIndex | The zero-based index of the item to be removed.

#### Return value

Returns an value that represents the number of items remaining in the control. If iIndex is invalid, the message returns CB_ERR.

#### Usage example

    CComboEx.DeleteItem(hComboEx, 4)

### GetComboControl

Gets the handle to the child combo box control.

    FUNCTION GetComboControl (BYVAL hComboEx AS HWND) AS HWND

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.

#### Return value

Returns the handle to the combo box control within the ComboBoxEx control.

#### Usage example

    DIM hComboEx AS HWND = CComboEx.GetComboControl(hComboEx)

### GetEditControl

Gets the handle to the edit control portion of a ComboBoxEx control. A ComboBoxEx control uses an edit box when it is set to the CBS_DROPDOWN style.

    FUNCTION GetEditControl (BYVAL hComboEx AS HWND) AS HWND

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.

#### Return value

Returns the handle to the edit control within the ComboBoxEx control if it uses the CBS_DROPDOWN style. Otherwise, the message returns NULL.

#### Usage example

    DIM hComboEx AS HWND = CComboEx.GetEditControl(hComboEx)

### GetExtendedStyle

Gets the extended styles that are in use for a ComboBoxEx control.

    FUNCTION GetExtendedStyle (BYVAL hComboEx AS HWND) AS DWORD

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.

#### Return value

Returns a DWORD value that contains the ComboBoxEx control extended styles in use for the control.

#### Usage example

    DIM dwStyle AS DWORD = CComboEx.GetExtendedStyle(hComboEx)

### GetImageList

Gets the handle to an image list assigned to a ComboBoxEx control.

    FUNCTION GetImageList (BYVAL hComboEx AS HWND) AS HIMAGELIST

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.

#### Return value

Returns the handle to the image list assigned to the control if successful, or NULL otherwise.

#### Usage example

    DIM hIml AS HIMAGELIST = CComboEx.GetImageList(hComboEx)

### GetItem

Gets item information for a given ComboBoxEx item.

    FUNCTION GetItem (BYVAL hComboEx AS HWND, BYVAL pCBItem AS COMBOBOXEXITEMW PTR) AS BOOLEAN
    FUNCTION GetItem (BYVAL hComboEx AS HWND, BYREF CBItem AS COMBOBOXEXITEMW) AS BOOLEAN
    FUNCTION GetItem (BYVAL hComboEx AS HWND) AS COMBOBOXEXITEMW

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.
pCBItem | A pointer to a COMBOBOXEXITEM structure that receives the item information.
CBItem | A COMBOBOXEXITEM structure that receives the item information.

#### Return value

Returns nonzero if successful, or zero otherwise.

#### Usage example

    DIM cbi AS COMBOBOXEXITEM
    CComboEx.GetItem(hComboEx, @cbi)
    CComboEx.GetItem(hComboEx, cbi)
    cbi = CComboEx.GetItem(hComboEx)

### HasEditChanged

Determines whether the user has changed the text of a ComboBoxEx edit control.

    FUNCTION HasEditChanged (BYVAL hComboEx AS HWND) AS BOOLEAN

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.

#### Return value

Returns TRUE if the text in the control’s edit box has been changed, or FALSE otherwise.

#### Remarks

A ComboBoxEx control uses an edit box control when it is set to the CBS_DROPDOWN style. You can retrieve the edit box control’s window handle by sending a CBEM_GETEDITCONTROL message.

When the user begins editing, you will receive a CBEN_BEGINEDIT notification. When editing is complete, or the focus changes, you will receive a CBEN_ENDEDIT notification. The CBEM_HASEDITCHANGED message is only useful for determining whether the text has been changed if it is sent before the CBEN_ENDEDIT notification. If the message is sent afterward, it will return FALSE. For example, suppose the user starts to edit the text in the edit box but changes focus, generating a CBEN_ENDEDIT notification. If you then send a CBEM_HASEDITCHANGED message, it will return FALSE, even though the text has been changed.

The CBS_SIMPLE style does not work correctly with CBEM_HASEDITCHANGED.

#### Usage example

    DIM bChanged AS BOOLEAN = CComboEx.HasEditChanged(hComboEx)

### InsertItem

Inserts a new item in a ComboBoxEx control.

    FUNCTION InsertItem (BYVAL hComboEx AS HWND, BYVAL pCBItem AS COMBOBOXEXITEMW PTR) AS LONG
    FUNCTION InsertItem (BYVAL hComboEx AS HWND, BYREF CBItem AS COMBOBOXEXITEMW) AS LONG

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.
pCBItem | A pointer to a COMBOBOXEXITEM structure that contains information about the item to be inserted. When the message is sent, the iItem member must be set to indicate the zero-based index at which to insert the item. To insert an item at the end of the list, set the iItem member to -1.
CBItem | A COMBOBOXEXITEM structure that contains information about the item to be inserted. When the message is sent, the iItem member must be set to indicate the zero-based index at which to insert the item. To insert an item at the end of the list, set the iItem member to -1.

#### Return value

Returns the index at which the new item was inserted if successful, or -1 otherwise.

### SetExtendedStyle

Sets extended styles within a ComboBoxEx control.

    FUNCTION SetExtendedStyle (BYVAL hComboEx AS HWND, BYVAL dwExMask AS DWORD, BYVAL dwExStyle AS DWORD) AS DWORD

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.
dwExMask | A DWORD value that indicates which styles in dwExStyle are to be affected. Only the extended styles in wParam will be changed. If this parameter is zero, then all of the styles in dwExStyle will be affected.
dwExStyle | A DWORD value that contains the ComboBoxEx Control Extended Styles to set for the control.

#### Return value

Returns a DWORD value that contains the extended styles previously used for the control.

#### Remarks

dwExStyle enables you to modify one or more extended styles without having to retrieve the existing styles first. For example, if you pass CBES_EX_NOEDITIMAGE for dwExMAsk and 0 for dwExStyle, the CBES_EX_NOEDITIMAGE style will be cleared, but all other styles will remain the same.

If you try to set an extended style for a ComboBoxEx control created with the CBS_SIMPLE style, it may not repaint properly.

### SetImageList

Sets an image list for a ComboBoxEx control.

    FUNCTION SetImageList (BYVAL hComboEx AS HWND, BYVAL himl AS HIMAGELIST) AS HIMAGELIST

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.
himl | A handle to the image list to be set for the control.

#### Return value

Returns the handle to the image list previously associated with the control, or returns NULL if no image list was previously set.

#### Remarks

The height of images in your image list might change the size requirements of the ComboBoxEx control. It is recommended that you resize the control after sending this message to ensure that it is displayed properly.

#### Usage example

    DIM hOldIml AS HIMAGELIST = CComboEx.SetImageList(hComboEx, <new image list handle>)

### SetItem

Sets the attributes for an item in a ComboBoxEx control.

    FUNCTION SetItem (BYVAL hComboEx AS HWND, BYREF pCBItem AS COMBOBOXEXITEMW PTR) AS BOOLEAN
    FUNCTION SetItem (BYVAL hComboEx AS HWND, BYREF CBItem AS COMBOBOXEXITEMW) AS BOOLEAN

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.
pCBItem | A pointer to a COMBOBOXEXITEM structure that contains the item information to be set. When the message is sent, the mask member of the structure must be set to indicate which attributes are valid and the iItem member must specify the zero-based index of the item to be modified. Setting the iItem member to -1 will modify the item displayed in the edit control.
CBItem | A COMBOBOXEXITEM structure that contains the item information to be set. When the message is sent, the mask member of the structure must be set to indicate which attributes are valid and the iItem member must specify the zero-based index of the item to be modified. Setting the iItem member to -1 will modify the item displayed in the edit control.

### SetWindowTheme

Sets the visual style of a ComboBoxEx control.

    SUB SetWindowTheme (BYVAL hComboEx AS HWND, BYVAL pwszStyle AS WSTRING PTR)

Parameter | Description
--- | ---
hComboEx | The handle of the ComboBoxEx control.
pwszStyle | A pointer to a Unicode string that contains the control visual style to set.