'変数の明示的な宣言を強制します
Option Explicit
'API関数の利用を宣言します
Private Declare Function SendMessage Lib "user32" Alias
"SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
'定数を定義します
Private Const CB_GETITEMHEIGHT = &H154
'API関数の利用を宣言します
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
'変数を宣言します
Dim MY_CB_ITEMHEIGHT As Long
Private Sub Combo2_DropDown()
'変数を宣言します
Dim ret As Long
Dim CB_NEWHEIGHT As Long
'コンボボックスコントロールの高さを設定20の項目を表示できるようにします
'("+2"はドロップダウンリスト部の上下の境界線の高さ分)
CB_NEWHEIGHT = Combo2.Height + MY_CB_ITEMHEIGHT * 20 + 2
'コンボボックスコントロール(ウィンドウ)の位置とサイズを変更します
ret = MoveWindow(Combo2.hwnd, Combo2.Left, Combo2.Top, Combo2.Width,
CB_NEWHEIGHT, True)
End Sub
Private Sub Form_Load()
'変数を宣言します
Dim i As Integer
'スケールモードをピクセル単位に設定します
Form1.ScaleMode = vbPixels
Combo1.Text = "Normal"
Combo2.Text = "Extention"
'コンボボックスコントロールにアイテムを設定します
For i = 1 To 30
Combo1.AddItem "data" & i
Combo2.AddItem "data" & i
Next
'コンボボックスコントロールの項目の高さを取得します
MY_CB_ITEMHEIGHT = SendMessage(Combo2.hwnd, CB_GETITEMHEIGHT,
0, 0&)
End Sub