コンボ(リスト)ボックスの選択項目を削除          <TOP>


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

CB_GETCURSEL(&H147) コンボボックスのリストボックス内で選択された項目のインデックスを取得する
CB_DELETESTRING(&H144) コンボボックスのリストボックス内の文字列を削除する
CB_SHOWDROPDOWN(&H14F) コンボボックスのリストボックスの表示または非表示を切り替える
CB_ERR(-1) エラー
LB_GETCURSEL(&H188) リストボックス内で選択された項目のインデックスを取得する
LB_DELETESTRING(&H182) リストボックス中の文字列を削除する
LB_ERR(-1) エラー

 

'================================================================
'= コンボ(リスト)ボックスの選択項目を削除
'=    (CB_DELETESTRING.bas)
'================================================================
#include "Windows.bi"

' ウィンドウにメッセージを送信
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

#define CB_GETCURSEL &H147              'コンボボックスのリストボックス内で選択された項目のインデックスを取得する
#define CB_DELETESTRING &H144           'コンボボックスのリストボックス内の文字列を削除する
#define CB_SHOWDROPDOWN &H14F           'コンボボックスのリストボックスの表示または非表示を切り替える
#define CB_ERR (-1)                     'エラー

#define LB_GETCURSEL &H188              'リストボックス内で選択された項目のインデックスを取得する
#define LB_DELETESTRING &H182           'リストボックス中の文字列を削除する
#define LB_ERR (-1)                     'エラー

Var Shared Combo1 As Object
Var Shared List1 As Object
Var Shared Button1 As Object

Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14
Combo1.SetWindowSize 66, 96
List1.Attach GetDlgItem("List1") : List1.SetFontSize 14
List1.SetWindowSize 66, 96
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var mm(11) As String
    Var Ret As Long

    For i = 0 To 11
        Read mm(i)
        Combo1.AddString mm(i)
        List1.AddString mm(i)
    Next

    'コンボボックスドロップダウン表示
    SetMousePointer 0
    Ret = Api_SendMessage(Combo1.GethWnd, CB_SHOWDROPDOWN, 1, ByVal 0)

    Data "January ", "February", "March", "April", "May", "June"
    Data "July", "August", "September", "October", "November", "December"
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var SelIndex As Long
    Var Ret As Long

    'コンボボックスの選択項目インデックスを取得
    SelIndex = Api_SendMessage(Combo1.GethWnd, CB_GETCURSEL, 0, ByVal CLng(0))

    '項目インデックスが取得できたとき
    If SelIndex <> CB_ERR Then
        '選択項目を削除
        Ret = Api_SendMessage(Combo1.GethWnd, CB_DELETESTRING, SelIndex, ByVal CLng(0))

        'エディットボックス部をクリア
        Combo1.SetWindowText ""
    End If

    'リストボックスの選択項目インデックスを取得
    SelIndex = Api_SendMessage(List1.GethWnd, LB_GETCURSEL, 0, ByVal CLng(0))

    '項目インデックスが取得できたとき
    If SelIndex <> LB_ERR Then
        '選択項目を削除
        Ret = Api_SendMessage(List1.GethWnd, LB_DELETESTRING, SelIndex, ByVal CLng(0))
    End If
End Sub

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