IGameInput::GetPreviousReading
必要に応じてフィルター処理された入力ストリームから、参照読み取り値に基づいて前の IGameInputReading を取得します。
構文
HRESULT GetPreviousReading(
IGameInputReading* referenceReading,
GameInputKind inputKind,
IGameInputDevice* device,
IGameInputReading** reading
)
パラメーター
referenceReading _In_
型: IGameInputReading*
返される IGameInputReading
インターフェイスは、順番的にはこの参照読み取り値よりも前に読み取られます。
inputKind _In_
型: GameInputKind
前の読み取り値をプルするための入力の種類のフィルター。 GameInputKind
インターフェイスはフラグ変数です。 複数の値を組み合わせて複数の定数をフィルター処理できます。
複数の入力の種類を指定すると、入力の種類の 1 つ以上が含まれている読み取り値がすべて一致し、返されます。
device _In_opt_
型: IGameInputDevice*
前の読み取り値をプルするための特定のデバイスのフィルター。
reading _COM_Outptr_
型: IGameInputReading**
返される IGameInputReading
インターフェイスであり、順番的には referenceReading
入力よりも前になります。
戻り値
型: HRESULT
関数の結果。 null の IGameInputDevice ポインターが渡されると、E_NOTIMPL が返されます。
解説
GetNextReading および GetPreviousReading メソッドでは、アプリで入力履歴を読み取り値ごとに調べます。
referenceReading
よりも後の読み取り値がない場合、切断されているデバイスに対してデバイス フィルターが提供されている場合、または、非常に長い時間が経過し、参照読み取り値と返される読み取り値が入力ストリーム履歴バッファーに残っていない場合、NULL
値と失敗 HRESULT
を返します。 入力ストリームは履歴バッファー内の各デバイスからの読み取り値の後半を保持するので、継続的に入力を処理するアプリでの経過時間エラーはまれです。
次のコード例では、特定のデバイスからすべてのゲームパッド状態をポーリングする方法を示します。
Microsoft::WRL::ComPtr<IGameInput> gameInput;
Microsoft::WRL::ComPtr<IGameInputDevice> gamepad;
Microsoft::WRL::ComPtr<IGameInputReading> prevReading;
void PollGamepadInput() noexcept
{
if (!prevReading)
{
if (SUCCEEDED(gameInput->GetCurrentReading(
GameInputKindGamepad,
nullptr,
&prevReading)))
{
prevReading->GetDevice(&gamepad);
// Application-specific code to process the initial reading
}
}
else
{
Microsoft::WRL::ComPtr<IGameInputReading> nextReading;
HRESULT hr = gameInput->GetNextReading(
prevReading.Get(),
GameInputKindGamepad,
gamepad.Get(),
&nextReading);
if (SUCCEEDED(hr))
{
// Application-specific code to process the next reading
prevReading = nextReading;
}
else if (hr != GAMEINPUT_E_READING_NOT_FOUND)
{
gamepad = nullptr;
prevReading = nullptr;
}
}
}
要件
ヘッダー: GameInput.h
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体
関連項目
GameInput
GameInput の概要
IGameInput_GetCurrentReading
IGameInput_GetNextReading
IGameInput