User manual - DT-5100 エミュレータ開発解説書ver.3.00(2004年3月8日)

3.4 上の左右ト ボタンの処
システムフック処理は左右トリガ ボタンの押Key_F11 Key_F12を検出すると、次の名前のイベント(名
前付き自動リセットイベント)をシグナル状態にします。
左トリガ ボタンのイベント名 PxEmEvt1
右トリガ ボタンのイベント名 PxEmEvt2
従って、左右トリガ ボタンの押下で値を返すような関数では、上記名前で作成したイベント配列を指定し、
WaitForMultipleObject() で待つことで実現できます。
以下はエミュレーター版 TDWaitForDecode()の例です。
#include "pxemevt.h"
Result_t TDWaitForDecode(
DWORD dwTime,
PTCHAR ptcMessage,
PTCHAR ptcCodeID,
PTCHAR ptcAimId,
PTCHAR ptcSymModifier,
PWORD pnLength,
BOOL (*fpCallBack)(void)
)
{
DWORD dwEvent;
Result_t rt = RESULT_ERR_NOIMAGE;
// 名前付きイベント作成
PxEmEvt_Init(); // ・・・・・・・・・・・・・・・・・・・・
dwEvent = WaitForMultipleObjects ( PXEVENT_NUM, hPxEmEvt, FALSE, dwTime); ・・
switch( dwEvent)
{
case WAIT_OBJECT_0: // 左トリガーキー ・・・・・・・・・・・・
wcscpy( ptcMessage, TEXT( "Scanned by LEFT triger"));
*pnLength = wcslen( TEXT( "Scanned by LEFT triger"));
rt = RESULT_SUCCESS;
break;
case WAIT_OBJECT_0+1: // 右トリガーキ ・・・・・・・・・・・・・’
wcscpy( ptcMessage, TEXT( "Scanned by RIGHT triger"));
*pnLength = wcslen( TEXT( "Scanned by RIGHT triger"));
rt = RESULT_SUCCESS;
break;
case WAIT_ABANDONED_0: // ABANDONED
case WAIT_TIMEOUT: // WAIT_TIMEOUT
case WAIT_FAILED: // WAIT_FAILED
default:
rt = RESULT_ERR_NOIMAGE;
break;
}
// 名前付きイベント削除
PxEmEvt_End(); // ・・・・・・・・・・・・・・・・・・・・
return rt;
}
7