VCのイベントメッセージルーチンは次の書式になります。
LRESULT CAioDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
message
メッセージ番号が渡されます。
wParam
下位2バイトにIDが渡されます。上位2バイトは現在使用しません。
lParam
イベントごとに固有のパラメータが渡されます。
メッセージ処理例1
イベントを使用するデバイスが1つしか存在しない場合、IDによるデバイスの判断は特に必要ありません。
以下のコードはイベントが発生したときにメッセージボックスを表示する例です。
switch( message ){
case AIOM_AOE_START:
AfxMessageBox("ジェネレーティング開始", MB_OK, 0);
break;
case AIOM_AOE_RPTEND:
AfxMessageBox("リピート終了", MB_OK, 0);
break;
case AIOM_AOE_END:
AfxMessageBox("ジェネレーティング終了", MB_OK, 0);
break;
case AIOM_AOE_DATA_NUM:
AfxMessageBox("データ格納", MB_OK, 0);
break;
case AIOM_AOE_SCERR:
AfxMessageBox("ジェネレーティングクロック周期エラー", MB_OK, 0);
break;
case AIOM_AOE_ADERR:
AfxMessageBox("DA変換エラー", MB_OK, 0);
break;
}
メッセージ処理例2
複数のデバイスでイベントを使用する場合、どのデバイスから発生したイベントかを判断する必要があります。
以下のコードは、2つのデバイス(ID1とID2)でイベントを使用する例です。
if ( wParam = ID1 ){
switch( message ){
case AIOM_AOE_START:
AfxMessageBox("ID1:ジェネレーティング開始",
MB_OK, 0);
break;
case AIOM_AOE_RPTEND:
AfxMessageBox("ID1:リピート終了",
MB_OK, 0);
break;
case AIOM_AOE_END:
AfxMessageBox("ID1:ジェネレーティング終了",
MB_OK, 0);
break;
case AIOM_AOE_DATA_NUM:
AfxMessageBox("ID1:データ格納",
MB_OK, 0);
break;
case AIOM_AOE_SCERR:
AfxMessageBox("ID1:ジェネレーティングクロック周期エラー",
MB_OK, 0);
break;
case AIOM_AOE_ADERR:
AfxMessageBox("ID1:DA変換エラー",
MB_OK, 0);
break;
}
}
else{
switch( message ){
case AIOM_AOE_START:
AfxMessageBox("ID2:ジェネレーティング開始",
MB_OK, 0);
break;
case AIOM_AOE_RPTEND:
AfxMessageBox("ID2:リピート終了",
MB_OK, 0);
break;
case AIOM_AOE_END:
AfxMessageBox("ID2:ジェネレーティング終了",
MB_OK, 0);
break;
case AIOM_AOE_DATA_NUM:
AfxMessageBox("ID2:データ格納",
MB_OK, 0);
break;
case AIOM_AOE_SCERR:
AfxMessageBox("ID2:ジェネレーティングクロック周期エラー",
MB_OK, 0);
break;
case AIOM_AOE_ADERR:
AfxMessageBox("ID2:DA変換エラー",
MB_OK, 0);
break;
}
}