イベントメッセージルーチンは次の書式になります。
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_AOE_START:
MessageBox.Show (this, "ジェネレーティング開始",
"ウィンドウ名");
break;
case AIOM_AOE_RPTEND:
MessageBox.Show (this, "リピート終了", "ウィンドウ名");
break;
case AIOM_AOE_END:
MessageBox.Show (this, "ジェネレーティング終了",
"ウィンドウ名");
break;
case AIOM_AOE_DATA_NUM:
MessageBox.Show (this, "データ格納", "ウィンドウ名");
break;
case AIOM_AOE_SCERR:
MessageBox.Show (this, "ジェネレーティングクロック周期エラー",
"ウィンドウ名");
break;
case AIOM_AOE_ADERR:
MessageBox.Show (this, "DA変換エラー", "ウィンドウ名");
break;
}
メッセージ処理例2
複数のデバイスでイベントを使用する場合、どのデバイスから発生したイベントかを判断する必要があります。
以下のコードは、2つのデバイス(ID1とID2)でイベントを使用する例です(第三引数の"ウィンドウ名"は任意です)。
if ( m.WParam = ID1 ){
switch( m.Msg ){
case AIOM_AOE_START:
MessageBox.Show (this,
"ID1:ジェネレーティング開始", "ウィンドウ1");
break;
case AIOM_AOE_RPTEND:
MessageBox.Show (this,
"ID1:リピート終了", "ウィンドウ1");
break;
case AIOM_AOE_END:
MessageBox.Show (this,
"ID1:ジェネレーティング終了", "ウィンドウ1");
break;
case AIOM_AOE_DATA_NUM:
MessageBox.Show (this,
"ID1:データ格納", "ウィンドウ1");
break;
case AIOM_AOE_SCERR:
MessageBox.Show (this,
"ID1:ジェネレーティングクロック周期エラー", ウィンドウ1");
break;
case AIOM_AOE_ADERR:
MessageBox.Show (this,
"ID1:DA変換エラー", "ウィンドウ1");
break;
}
}
else{
switch( m.Msg ){
case AIOM_AIE_START:
MessageBox.Show (this,
"ID2:ジェネレーティング開始", "ウィンドウ2");
break;
case AIOM_AIE_RPTEND:
MessageBox.Show (this,
"ID2:リピート終了", "ウィンドウ2");
break;
case AIOM_AIE_END:
MessageBox.Show (this,
"ID2:ジェネレーティング終了", "ウィンドウ2");
break;
case AIOM_AIE_DATA_NUM:
MessageBox.Show (this,
"ID2:データ格納", ウィンドウ2");
break;
case AIOM_AIE_SCERR:
MessageBox.Show (this,
"ID2:ジェネレーティングクロック周期エラー", "ウィンドウ2");
break;
case AIOM_AIE_ADERR:
MessageBox.Show (this,
"ID2:AD変換エラー", "ウィンドウ2");
break;
}
}