Visual Basic .NET

イベントメッセージルーチンは次の書式になります。


WinProcを利用する場合

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

m.Msg
メッセージ番号が渡されます。

 

m.WParam
下位2バイトにIDが渡されます。上位2バイトにはイベントを発生したカウンタのチャネルが渡されます。

 

m.LParam
イベントごとに固有のパラメータが渡されます。

 

メッセージ処理例1
イベントを使用するデバイスが1つしか存在しない場合、IDによるデバイスの判断は特に必要ありません。
以下のコードはイベントが発生したときにメッセージボックスを表示する例です。

Select Case Message
Case AIOM_CNTE_DATA_NUM
    MsgBox "デバイスID: " & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "比較カウント一致"
Case AIOM_CNTE_ORERR
    MsgBox "デバイスID: " & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "カウントオーバーラン"
Case AIOM_CNTE_ERR
    MsgBox "デバイスID: " & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "カウント動作エラー"
End Select

 

メッセージ処理例2
複数のデバイスでイベントを使用する場合、どのデバイスから発生したイベントかを判断する必要があります。
以下のコードは、2つのデバイス(ID1とID2)でイベントを使用する例です。

If m.WParam = ID1 Then
    Select Case Message
    Case AIOM_CNTE_DATA_NUM
        MsgBox "デバイス1 :" & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "比較カウント一致"
    Case AIOM_CNTE_ORERR
        MsgBox "デバイス1 :" & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "カウントオーバーラン"
    Case AIOM_CNTE_ERR
        MsgBox "デバイス1 :" & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "カウント動作エラー"
    End Select
Else
    Select Case Message
    Case AIOM_CNTE_DATA_NUM
        MsgBox "デバイス2 :" & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "比較カウント一致"
    Case AIOM_CNTE_ORERR
        MsgBox "デバイス2 :" & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "カウントオーバーラン"
    Case AIOM_CNTE_ERR
        MsgBox "デバイス2 :" & m.WParam & Chr$(13) & "現在のカウンタ値: " & m.LParam, , "カウント動作エラー"
    End Select
End If