Private Const CB_SETITEMHEIGHT = &H153Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub Command1_Click() Call SendMessage(Combo1.hwnd, CB_SETITEMHEIGHT, -1&, ByVal 13) Debug.Print Combo1.Height End Sub
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long Const CB_SETDROPPEDWIDTH = &H160' 设置ComboBox下拉选单长度函数 Public Sub SetComboHeight(ComboBox_Obj As ComboBox, NewHeight As Long) Dim OldScaleMode As Integer If TypeOf ComboBox_Obj.Parent Is Frame Then Exit Sub ' 改变ComboBox控件的容器的坐标度量单位为象素 OldScaleMode = ComboBox_Obj.Parent.ScaleMode ComboBox_Obj.Parent.ScaleMode = vbPixels ' 重新定义ComboBox的尺寸 MoveWindow ComboBox_Obj.hwnd, ComboBox_Obj.Left, _ ComboBox_Obj.Top, ComboBox_Obj.Width, NewHeight, 1 ' 恢复ComboBox控件的容器的坐标度量单位 ComboBox_Obj.Parent.ScaleMode = OldScaleMode End Sub' 设置ComboBox下拉选单宽度函数 Public Sub SetComboWidth(ComboBox_Obj As ComboBox, NewWidth As Long) ' NewWidth 是宽度,单位是 pixels SendMessage ComboBox_Obj.hwnd, CB_SETDROPPEDWIDTH, NewWidth, 0 End SubPrivate Sub Form_Load() Dim i As Integer ' 向ComboBox添加项 For i = 0 To 40 Demo_Combo.AddItem ("This is the long Item " + CStr(i)) Next i End Sub' 改变ComboBox下拉选单长度和宽度 Private Sub Change_But_Click() Call SetComboHeight(Demo_Combo, 300) Call SetComboWidth(Demo_Combo, 200) End Sub
Call SendMessage(Combo1.hwnd, CB_SETITEMHEIGHT, -1&, ByVal 13)
Debug.Print Combo1.Height
End Sub
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Const CB_SETDROPPEDWIDTH = &H160' 设置ComboBox下拉选单长度函数
Public Sub SetComboHeight(ComboBox_Obj As ComboBox, NewHeight As Long)
Dim OldScaleMode As Integer
If TypeOf ComboBox_Obj.Parent Is Frame Then Exit Sub
' 改变ComboBox控件的容器的坐标度量单位为象素
OldScaleMode = ComboBox_Obj.Parent.ScaleMode
ComboBox_Obj.Parent.ScaleMode = vbPixels
' 重新定义ComboBox的尺寸
MoveWindow ComboBox_Obj.hwnd, ComboBox_Obj.Left, _
ComboBox_Obj.Top, ComboBox_Obj.Width, NewHeight, 1
' 恢复ComboBox控件的容器的坐标度量单位
ComboBox_Obj.Parent.ScaleMode = OldScaleMode
End Sub' 设置ComboBox下拉选单宽度函数
Public Sub SetComboWidth(ComboBox_Obj As ComboBox, NewWidth As Long)
' NewWidth 是宽度,单位是 pixels
SendMessage ComboBox_Obj.hwnd, CB_SETDROPPEDWIDTH, NewWidth, 0
End SubPrivate Sub Form_Load()
Dim i As Integer
' 向ComboBox添加项
For i = 0 To 40
Demo_Combo.AddItem ("This is the long Item " + CStr(i))
Next i
End Sub' 改变ComboBox下拉选单长度和宽度
Private Sub Change_But_Click()
Call SetComboHeight(Demo_Combo, 300)
Call SetComboWidth(Demo_Combo, 200)
End Sub