コンボボックスのドロップダウンリスト幅を設定(U) <TOP>
コンボボックスのドロップダウンリスト幅を設定します。
SendMessage
ウィンドウにメッセージを送信
CB_GETLBTEXTLEN(&H149) コンボボックスのリストボックス文字列の長さを取得
CB_GETDROPPEDWIDTH(&H15F) コンボボックスのリスト幅を取得
CB_SHOWDROPDOWN(&H14F)
コンボボックスのリストボックスの表示または非表示を切り替える
CB_SETDROPPEDWIDTH(&H160) コンボボックスのリスト幅を変更
'================================================================ '= コンボボックスのドロップダウンリスト幅を設定(U) '= (ComboWidth2.bas) '================================================================ #include "Windows.bi" ' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&) #define CB_GETLBTEXTLEN &H149 'コンボボックスのリストボックス文字列の長さを取得 #define CB_GETDROPPEDWIDTH &H15F 'コンボボックスのリスト幅を取得 #define CB_SHOWDROPDOWN &H14F 'コンボボックスのリストボックスの表示または非表示を切り替える #define CB_SETDROPPEDWIDTH &H160 'コンボボックスのリスト幅を変更 Var Shared Combo1 As Object Var Shared Edit1 As Object Var Shared Text1 As Object Var Shared Button1 As Object Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14 Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var i As Long For i = 1 To 10 Combo1.AddString String$(20, Chr$(&H40 + i)) Next End Sub '================================================================ '= 幅を広げる '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var cwidth As Long Var NewDropDownWidth As Long If Val(Edit1.GetWindowText) Then NewDropDownWidth = Val(Edit1.GetWindowText) Ret = Api_SendMessage(Combo1.GethWnd, CB_SETDROPPEDWIDTH, NewDropDownWidth, ByVal 0) cwidth = Api_SendMessage(Combo1.GethWnd, CB_GETDROPPEDWIDTH, 0, ByVal 0) Text1.SetWindowText "ドロップダウン幅 = " & Trim$(Str$(cwidth)) & "ピクセル" Ret = Api_SendMessage(Combo1.GethWnd, CB_SHOWDROPDOWN, True, ByVal 0) End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End