前方部分検索・全体一致検索             <TOP>


前方部分検索・全体一致検索・指定文字列検索

SendMessage 指定のウィンドウにメッセージを送る

LB_FINDSTRING(&H18F) 前方部分検索
LB_FINDSTRINGEXACT(&H1A2) 全体一致検索
 

エディットボックスに入力した文字列からリストボックス内の文字列を検索し項目を選択します。
前方部分検索 LB_FINDSTRING       全体一致検索 LB_FINDSTRINGEXACT

 
 

'================================================================
'= 前方部分検索・全体一致検索
'=    (SendMessage.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_FINDSTRINGEXACT &H1A2        '全体一致検索

Var Shared Edit1 As Object
Var Shared List1 As Object
Var Shared Radio(1) As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
List1.Attach GetDlgItem("List1") : List1.SetFontSize 14
For i = 0 To 1
    Radio(i).Attach GetDlgItem("Radio" & Trim$(Str$(i + 1)))
    Radio(i).SetFontSize 14
Next i

'================================================================
'=
'================================================================
Declare Function Index bdecl () As Integer
Function Index()
    Index = Val(Mid$(GetDlgRadioSelect("Radio1"), 6)) - 1
End Function

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    List1.AddString "Computer"
    List1.AddString "Screen"
    List1.AddString "Modem"
    List1.AddString "Printer"
    List1.AddString "Scanner"
    List1.AddString "Sound Blaster"
    List1.AddString "Keyboard"
    List1.AddString "CD-ROM"
    List1.AddString "Mouse"

    Edit1.SetFocus
End Sub

'================================================================
'=
'================================================================
Declare Sub Edit1_Change edecl ()
Sub Edit1_Change()
    Var Msg As Long
    Var Ret As Integer

    If Index = 0 Then
        Msg = LB_FINDSTRING
    Else
        Msg = LB_FINDSTRINGEXACT
    End If

    Ret = Api_SendMessage(List1.GethWnd, Msg, -1, Edit1.GetWindowText)
    List1.SetCursel Ret
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End