Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Jul 1, 2000

Get the handle of the edit portion of a ComboBox

The ComboBox control contains an invisible Edit window, which is used for the edit area. In most cases you don't need to access this inner control directly, but occasionally a direct control of that window can be useful. The first thing to do is get the handle of such inner Edit control, which you do with the following code:


Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal _
    hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
    ByVal lpsz2 As String) As Long

Dim editHWnd As Long
editHWnd = FindWindowEx(Combo1.hWnd, 0&, vbNullString, vbNullString)
Once you have the handle of the control, you can exploit all the usual low-level techniques, using API functions such as SendMessage, SetWindowLong, or subclassing. For example, you can force uppercase characters as follows:

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal _
    hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
    ByVal lpsz2 As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Const GWL_STYLE = (-16)
Const ES_UPPERCASE = &H8&

Dim editHWnd As Long, style As Long

' get the handle of the inner Edit control
editHWnd = FindWindowEx(Combo1.hwnd, 0&, vbNullString, vbNullString)
' get its current Style
style = GetWindowLong(editHWnd, GWL_STYLE)
' set the ES_UPPERCASE bit
SetWindowLong editHWnd, GWL_STYLE, style Or ES_UPPERCASE
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


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

 

 

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