|
|
|
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: |
Click here to copy the following block | 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
editHWnd = FindWindowEx(Combo1.hwnd, 0&, vbNullString, vbNullString)
style = GetWindowLong(editHWnd, GWL_STYLE)
SetWindowLong editHWnd, GWL_STYLE, style Or ES_UPPERCASE |
|
|
|
Submitted By :
Nayan Patel
(Member Since : 5/26/2004 12:23:06 PM)
|
|
|
Job Description :
He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting. |
View all (893) submissions by this author
(Birth Date : 7/14/1981 ) |
|
|