リストボックスの項目を重複させずに追加 <TOP>
前方一致文字列を検索し、重複させずに追加します。
SendMessage ウィンドウにメッセージを送信
LB_FINDSTRING(&H18F) 前方部分検索
LB_ADDSTRING(&H180) リストボックスに文字列を追加
'================================================================ '= リストボックスの項目を重複させずに追加
'= (LB_FINDSTRING.bas) '================================================================ #include "Windows.bi" ' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) #define LB_FINDSTRING &H18F '前方部分検索 #define LB_ADDSTRING &H180 'リストボックスに文字列を追加する #define LB_ERR (-1) 'エラー Var Shared Edit1 As Object Var Shared Text1 As Object Var Shared List1 As Object Var Shared Button1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() For i = 1 To 20 List1.AddString Trim$(Str$(i * 1000)) Next End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Start As Long Var MyStr As String Var Cnt As Long Var Ret As Long '検索条件を全範囲に設定 Start = -1 '検索する文字列を指定 MyStr = Edit1.GetWindowText If MyStr = "" Then Exit Sub '指定した文字列を検索 Ret = Api_SendMessage(List1.GethWnd, LB_FINDSTRING, Start, MyStr) '検索できなかったとき If Ret = LB_ERR Then 'リストボックスに項目を追加 Cnt = Api_SendMessage(List1.GethWnd, LB_ADDSTRING, 0, MyStr) '追加した項目を選択 List1.SetCursel Cnt '処理結果を表示 Text1.SetWindowtext Str$(Cnt + 1) & "番目に追加" '検索できたとき Else '検索した項目を選択 List1.SetCursel Ret '項目のインデックスを表示 Text1.SetWindowtext "追加できません" End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End