Visual C#

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


WndProcを利用する場合

[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
protected override void WndProc (ref Message m)

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

 

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

 

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

 

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

switch( m.Msg ){
case AIOM_CNTE_DATA_NUM:
    MessageBox.Show (this, "比較カウント一致", "ウィンドウ名");
    break;
case AIOM_CNTE_ORERR:
    MessageBox.Show (this, "カウントオーバーラン", "ウィンドウ名");
    break;
case AIOM_CNTE_ERR:
    MessageBox.Show (this, "カウント動作エラー", "ウィンドウ名");
    break;
}

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

if ( m.WParam = ID1 ){
    switch( m.Msg ){
    case AIOM_CNTE_DATA_NUM:
        MessageBox.Show (this, "ID1:比較カウント一致", "ウィンドウ1");
        break;
    case AIOM_CNTE_ORERR:
        MessageBox.Show (this, "ID1:カウントオーバーラン", "ウィンドウ1");
        break;
    case AIOM_CNTE_ERR:
        MessageBox.Show (this, "ID1:カウント動作エラー", "ウィンドウ1");
        break;
    }
}
else{
    switch( m.Msg ){
    case AIOM_CNTE_DATA_NUM:
        MessageBox.Show (this, "ID2:比較カウント一致", "ウィンドウ2");
        break;
    case AIOM_CNTE_ORERR:
        MessageBox.Show (this, "ID2:カウントオーバーラン", "ウィンドウ2");
        break;
    case AIOM_CNTE_ERR:
        MessageBox.Show (this, "ID2:カウント動作エラー", "ウィンドウ2");
        break;
    }
}