イベントメッセージルーチンは次の書式になります。
WndProcを利用する場合
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_AIE_START
    MsgBox "デバイスID: " & m.WParam & 
 Chr$(13), , "サンプリング開始"
Case AIOM_AIE_RPTEND
    MsgBox "デバイスID: " & m.WParam & 
 Chr$(13) & "リピート回数: " & m.LParam, , "リピート終了"
Case AIOM_AIE_END
    MsgBox "デバイスID: " & m.WParam & 
 Chr$(13) & "サンプリング回数: " & m.LParam, , "サンプリング終了"
Case AIOM_AIE_DATA_NUM
    MsgBox "デバイスID: " & m.WParam & 
 Chr$(13) & "サンプリング回数: " & m.LParam, , "データ格納"
Case AIOM_AIE_OFERR
    MsgBox "デバイスID: " & m.WParam & 
 Chr$(13) & "サンプリング回数: " & m.LParam, , "オーバーフローエラー"
Case AIOM_AIE_SCERR
    MsgBox "デバイスID: " & m.WParam & 
 Chr$(13) & "サンプリング回数: " & m.LParam, , "サンプリングクロック周期エラー"
Case AIOM_AIE_ADERR
    MsgBox "デバイスID: " & m.WParam & 
 Chr$(13) & "サンプリング回数: " & m.LParam, , "AD変換エラー"
End Select
メッセージ処理例2
複数のデバイスでイベントを使用する場合、どのデバイスから発生したイベントかを判断する必要があります。
以下のコードは、2つのデバイス(ID1とID2)でイベントを使用する例です。
If m.WParam = ID1 Then
    Select Case Message
    Case AIOM_AIE_START
        MsgBox "デバイス1" 
 & Chr$(13), , "サンプリング開始"
    Case AIOM_AIE_RPTEND
        MsgBox "デバイス1" 
 & Chr$(13) & "リピート回数: " & m.LParam, , "リピート終了"
    Case AIOM_AIE_END
        MsgBox "デバイス1" 
 & Chr$(13) & "サンプリング回数: " & m.LParam, , "サンプリング終了"
    Case AIOM_AIE_DATA_NUM
        MsgBox "デバイス1" 
 & Chr$(13) & "サンプリング回数: " & m.LParam, , "データ格納"
    Case AIOM_AIE_OFERR
        MsgBox "デバイス1: " 
 & m.WParam & Chr$(13) & "サンプリング回数: " & m.LParam, 
 , "オーバーフローエラー"
    Case AIOM_AIE_SCERR
        MsgBox "デバイス1" 
 & Chr$(13) & "サンプリング回数: " & m.LParam, , "サンプリングクロック周期エラー"
    Case AIOM_AIE_ADERR
        MsgBox "デバイスID: " 
 & m.WParam & Chr$(13) & "サンプリング回数: " & m.LParam, 
 , "AD変換エラー"
    End Select
Else
    Select Case Message
    Case AIOM_AIE_START
        MsgBox "デバイス2" 
 & Chr$(13), , "サンプリング開始"
    Case AIOM_AIE_RPTEND
        MsgBox "デバイス2" 
 & Chr$(13) & "リピート回数: " & m.LParam, , "リピート終了"
    Case AIOM_AIE_END
        MsgBox "デバイス2" 
 & Chr$(13) & "サンプリング回数: " & m.LParam, , "サンプリング終了"
    Case AIOM_AIE_DATA_NUM
        MsgBox "デバイス2" 
 & Chr$(13) & "サンプリング回数: " & m.LParam, , "データ格納"
    Case AIOM_AIE_OFERR
        MsgBox "デバイス2: " 
 & m.WParam & Chr$(13) & "サンプリング回数: " & m.LParam, 
 , "オーバーフローエラー"
    Case AIOM_AIE_SCERR
        MsgBox "デバイス2" 
 & Chr$(13) & "サンプリング回数: " & m.LParam, , "サンプリングクロック周期エラー"
    Case AIOM_AIE_ADERR
        MsgBox "デバイスID: " 
 & m.WParam & Chr$(13) & "サンプリング回数: " & m.LParam, 
 , "AD変換エラー"
    End Select
End If
MyBase.WndProc(m)
End Sub