コンボボックス内のリストを取り出す <TOP>
コンボボックス内のリストを取り出します。
SendMessage 指定のウィンドウにメッセージを送る
CB_GETCOUNT(&H146)
項コンボボックスのリストボックスの項目数を取得する
CB_GETLBTEXT(&H148)
コンボボックスのリストボックスから文字列を取得する
CB_GETLBTEXTLEN(&H149)
コンボボックスのリストボックス文字列の長さを取得する
目数を取得 → その長さを取得 → テキストを取得
参照
'================================================================ '= コンボボックスのリストを取り出す
'= (SendMessage4.bas) '================================================================ #include "Windows.bi" ' ウィンドウにメッセージを送信 Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) #define CB_GETCOUNT &H146 'コンボボックスのリストボックスの項目数を取得する #define CB_GETLBTEXT &H148 'コンボボックスのリストボックスから文字列を取得する #define CB_GETLBTEXTLEN &H149 'コンボボックスのリストボックス文字列の長さを取得する #define vbCrLf (Chr$(13) & Chr$(10)) 'キャリッジリターンとラインフィード(\r\n) Var Shared Combo1 As Object Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Combo1.AddString "January" Combo1.AddString "February" Combo1.AddString "March" Combo1.AddString "April" Combo1.AddString "May" Combo1.AddString "June" Combo1.AddString "July" Combo1.AddString "August" Combo1.AddString "September" Combo1.AddString "October" Combo1.AddString "November" Combo1.AddString "December" End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var num As Long Var i As Integer Var txt As String Var Buffer As String Var length As Long 'コンボボックスの項目数を取得 num = Api_SendMessage(Combo1.GethWnd, CB_GETCOUNT, 0, 0) 'リストを調べる For i = 0 To num - 1 '項目の長さを取得 length = Api_SendMessage(Combo1.GethWnd, CB_GETLBTEXTLEN, i, 0) 'バッファの確保 Buffer = Space$(length + 1) 'テキストを取得 length = Api_SendMessage(Combo1.GethWnd, CB_GETLBTEXT, i, Buffer) txt = txt & Left$(Buffer, length) & vbCrLf Next i A% = MessageBox("", txt, 0, 2) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End