コンボボックスのドロップダウンリスト幅を設定(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