メッセージキュー内のメッセージの有無を判定          <TOP>


GetInputState 呼び出し側スレッドのメッセージキューの中に、メッセージが存在するかどうかを判断

 

 

'================================================================
'= メッセージキュー内のメッセージの有無を判定
'=    (GetInputState.bas)
'================================================================
#include "Windows.bi"

' 呼び出し側スレッドのメッセージキューの中に、マウスボタンメッセージまたはキーボードメッセージが存在するかどうかを調べる
Declare Function Api_GetInputState& Lib "user32" Alias "GetInputState" ()

Var Shared bCancel As Integer

Var Shared Text1 As Object
Var Shared Button1 As Object
Var Shared Button2 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14
Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var n As Long

    '初期状態
    bCancel = False

    'Loop開始
    Do
        n = n + 1
        'マウスおよびキーボードからのメッセージをチェック
        If Api_GetInputState() = False Then CallEvent
        Text1.SetWindowText Str$(n)
    Loop Until bCancel = True

    A% = MessageBox(GetWindowText, "メッセージを確認しました!", 0, 2)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    bCancel = True
End Sub

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