コンボボックスのリスト表示状態の判断          <TOP>


SendMessage ウィンドウにメッセージを送信
CB_GETDROPPEDSTATE(&H157) コンボボックスのリストボックスが表示されている状態かどうかを判断
 

 

'================================================================
'= コンボボックスのリスト表示状態の判断
'=    (CB_GETDROPPEDSTATE.bas)
'================================================================
#include "Windows.bi"

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

#define CB_GETDROPPEDSTATE &H157        'コンボボックスのリストボックスが表示されている状態かどうかを判断する

Var Shared Combo1 As Object
Var Shared Text1 As Object
Var Shared Timer1 As Object

Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Timer1.Attach GetDlgItem("Timer1")

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    For i% = 1 To 20
        Combo1.AddString Str$(i%)
    Next

    Timer1.SetInterval 10
    Timer1.Enable -1
End Sub

'================================================================
'=
'================================================================
Declare Sub Timer1_Timer edecl ()
Sub Timer1_Timer()
    Var Ret As Long

    Ret = Api_SendMessage(Combo1.GethWnd, CB_GETDROPPEDSTATE, 0, 0)

    If Ret Then
        Text1.SetWindowText "リストボックスが表示されています!"
    Else
        Text1.SetWindowText "リストボックスが表示されていません!"
    End If
End Sub

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