コンボ(リスト)ボックスの選択項目番号を取得          <TOP>


SendMessage ウィンドウにメッセージを送信
CB_GETCURSEL(&H147) コンボボックスのリストボックス内で選択された項目のインデックスを取得する
CB_ERR(-1) エラー
LB_GETCURSEL(&H188) リストボックス内で選択された項目のインデックスを取得する
LB_ERR(-1) エラー
 

Combo1.GetCursel、List1.GetCurselと同じです。

 

'================================================================
'= コンボ(リスト)ボックスの選択項目番号を取得
'=    (CB_GETCURSEL.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_ERR (-1)                     'エラー

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

Var Shared Combo1 As Object
Var Shared List1 As Object
Var Shared Text1 As Object
Var Shared Text2 As Object
Var Shared Button1 As Object

Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14
List1.Attach GetDlgItem("List1") : List1.SetFontSize 14
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 12
Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 12
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

Var Shared Month(11) As String

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    For i = 0 To 11
        Read Month(i)
        Combo1.AddString Month(i)
        List1.AddString Month(i)
    Next

    Data "睦月","如月","弥生","卯月","皐月","水無月"
    Data "文月","葉月","長月","神無月","霜月","師走"
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var CbSelIndex As Long
    Var LbSelIndex As Long

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

    '項目インデックスが取得できたとき
    If CbSelIndex <> CB_ERR Then
        '選択項目インデックスを表示
        Text1.SetWindowText Str$(CbSelIndex)

    '項目インデックスが取得できなかったとき
    Else
        'エラーを表示
        Text1.SetWindowText "項目が選択されていません。"
    End If

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

    '項目インデックスが取得できたときは
    If LbSelIndex <> LB_ERR Then
        '選択項目インデックスを表示
        Text2.SetWindowText Str$(LbSelIndex)

    '項目インデックスが取得できなかったとき
    Else
        'エラーを表示
        Text2.SetWindowText "項目が選択されていません。"
    End If
End Sub

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