Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB4,VB5,VB6
Expertise: Intermediate
Sep 8, 2001



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Extended user interface for combo boxes

Apart from the different kind of combo boxes you can obtain by manipulating the Style property, another feature is made available by Windows when dealing with combo box controls, the so-called extended user interface. With standard combo box controls, the list portion stays invisible until the user presses F4 or the Alt-Down cursor key, or clicks on the arrow button on the right of the field: in such standard combo boxes pressing the Down cursor key results in showing the next available item in the text box, without opening the list. If you think that these key combinations are counter-intuitive for your user, you might enforce the extended user interface, so that the list portion appears as soon as he or she presses the Down key.

The extended user interface is enabled using the CB_SETEXTENDEDUI message; the third argument of the SendMessage function states if we wish to enable or disable this feature. The CB_GETEXTENDEDUI message returns the current status of this feature. Here are two routines that encapsulate the calls to SendMessage:


Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As _
    Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

' retrieve the ExtendedUI mode state
' Example:
'   MsgBox "ExtendedUI mode is enabled: " & GetComboExtendedUIMode(Combo1)

Function GetComboExtendedUIMode(ComboCtl As ComboBox) As Boolean
    GetComboExtendedUIMode = SendMessage(ComboCtl.hwnd, CB_GETEXTENDEDUI, 0, _
        ByVal 0)
End Function

' set whether the ExtendedUI mode is enabled
' Example: enable the ExntendedUI mode
'   SetComboExtendedUIMode Combo1, True
' Example: disable the ExntendedUI mode
'   SetComboExtendedUIMode Combo1, False

Function SetComboExtendedUIMode(ComboCtl As ComboBox, ByVal bState As Boolean)
    SendMessage ComboCtl.hwnd, CB_SETEXTENDEDUI, Abs(bState), ByVal 0
End Function
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date