1 | ハンドルしたとする |
Windows Phoneデバイスには一般的に「戻る」ボタンがある. 押されるとOSはback-button-pressイベントを発生させ, アプリが適切な方法でハンドルすることを期待する. アプリがこれらのイベントを明確に「ハンドルした」としなければ, OSはデフォルトのハンドルされないback-button-pressイベントの処理を行い, Windows Phose 8と8.1ではアプリを終了させる(そして前のアプリまたはデバイスのホームに切り替えようとする).
SDL_HINT_WINRT_HANDLE_BACK_BUTTONヒントを"1"に設定すると, SDLはアプリにback-button-pressイベントが送られたときハンドルしたとする.
内部では, Windows Phoneは戻るボタンイベントを特別なback-button-pressコールバック関数へパラメータとして送っている. 起動するとすぐに(アプリの初期化中に)back-button-pressイベントに応答する必要のあるアプリはそのための1つまたは複数のコールバック関数を登録することを期待されている. 戻るボタンが押されると, OSはこれらのコールバックを呼ぶ. もしアプリのコールバックから時間内にハンドルしたとして戻らなければ, またはコールバックを登録していなければ, OSはイベントがハンドルされなかったとして戻るボタンのデフォルトの動作(アプリの終了)を行う.
SDLはWindows Phone OSに自身のback-button-pressコールバックを登録する. このコールバックは一対のキー押下イベント(SDL_KEYDOWNとSDL_KEYUP)を発生させる. それぞれのスキャンコードはSDL_SCANCODE_AC_BACKである. その後, このヒントSDL_HINT_WINRT_HANDLE_BACK_BUTTONの値をチェックする. もしヒントに"1"が設定されていれば, 戻るボタンのイベントのHandledプロパティに'true'が設定される. ヒントに別の値が設定されていれば, または何も設定されていなければ, SDLはイベントのHandledプロパティをそのままにする. (デフォルトではOSは'false'を設定する.)
SDLアプリは, 戻るボタンを押す前にSDL_HINT_WINRT_HANDLE_BACK_BUTTONを設定することも, 戻るボタンが押されたときに設定することもできる.
戻るボタンが押されたことを検知するためには, SDLアプリはSDL_AddEventWatch()でコールバック関数を登録し, SDL_KEYDOWNイベントのスキャンコードSDL_SCANCODE_AC_BACKを待つ必要がある. (別の方法としてSDL_KEYUPイベントを待つこともできる. どちらのイベントでもよい.) このコールバックで設定されたSDL_HINT_WINRT_HANDLE_BACK_BUTTONの値は, OSの現在のback-button-pressイベントに適用される.
Windows Phoneアプリの戻るボタンの詳細は次のMicrosoftデベロッパーサイトにある: http://msdn.microsoft.com/library/windows/apps/jj247550%28v=vs.105%29.aspx/