次の方法で共有


XGameUiShowMessageDialogAsync

カスタマイズ可能なメッセージ ダイアログの UI を表示します。 ユーザーが押したボタンのインデックスが結果に格納されます。

構文

HRESULT XGameUiShowMessageDialogAsync(  
         XAsyncBlock* async,  
         const char* titleText,  
         const char* contentText,  
         const char* firstButtonText,  
         const char* secondButtonText,  
         const char* thirdButtonText,  
         XGameUiMessageDialogButton defaultButton,  
         XGameUiMessageDialogButton cancelButton  
)  

パラメーター

async _In_
型: XAsyncBlock*

XAsyncRun に渡された XAsyncBlock へのポインター。

titleText _In_
型: char*

メッセージ ダイアログのテキスト タイトル。

contentText _In_
型: char*

メッセージ ダイアログの内部に表示されるテキスト。

firstButtonText _In_opt_
型: char*

メッセージ ダイアログの 1 番目のボタンに表示されるテキスト。

secondButtonText _In_opt_
型: char*

メッセージ ダイアログの 2 番目のボタンに表示されるテキスト。

thirdButtonText _In_opt_
型: char*

メッセージ ダイアログの 3 番目のボタンに表示されるテキスト。

defaultButton _In_
型: XGameUiMessageDialogButton

メッセージ ダイアログが最初に表示されるときに既定で選択されているボタンを示します。

cancelButton _In_
型: XGameUiMessageDialogButton

キャンセル アクションを表すボタンを示します。

戻り値

型: HRESULT

非同期呼び出しの HRESULT の成功またはエラー コードです。

結果を取得するには、XAsyncBlock コールバック内で、または XAsyncBlock 完了後に、XGameUiShowMessageDialogResult を呼び出します。

解説

他の XGameUI 関数と同様に、XGameUiShowMessageDialogAsync では UI はタイトル パーティションの外部でレンダリングされ、結果は各フレームがディスプレイ デバイスに送信される前にタイトルの出力で作成されます。 つまり、ゲームがレンダリング中かどうかに関係なく、XGameUiShowMessageDialogAsync を使用してユーザーに情報を表示できます。

UI を呼び出すと、ゲームが制限モードに入ります。 制限モードでは、呼び出された UI のバックグラウンドにある間、タイトルが受け取るシステム リソースが少なくなります。 タイトルの制限モードや他の操作モードの詳細については、「Xbox ゲーム ライフ サイクル (NDA トピック)認可が必須です」をお読みください。

次のコード例では、開発シナリオでこのメソッドを使用して、入力を待機するブロック UI を作成する方法を示します。 これは、クラッシュ エラーの場所で現在の実行を一時停止し、クラッシュの場所を報告するか、またはデバッガーをアタッチするようデベロッパーに要求する場合に、特に便利です。

if (FAILED(XGameRuntimeInitialize()))  
    return 1;

XTaskQueueHandle queue;
DX::ThrowIfFailed(
    XTaskQueueCreate(XTaskQueueDispatchMode::ThreadPool, XTaskQueueDispatchMode::Immediate, &queue)  
);

XAsyncBlock* ab = new XAsyncBlock;
ZeroMemory(ab, sizeof(XAsyncBlock));
ab->queue = queue;

// show dialog, wait for completion, get result.

XGameUiMessageDialogButton button;
if (SUCCEEDED(XGameUiShowMessageDialogAsync(ab, u8"Title String", u8"This is content text",
                                            u8"Option #1", u8"Option #2", u8"Option #3",
                                            XGameUiMessageDialogButton::First,
                                            XGameUiMessageDialogButton::Third)) &&
    SUCCEEDED(XAsyncGetStatus(ab, true)) &&
    SUCCEEDED(XGameUiShowMessageDialogResult(ab, &button)))  
{
    DoSomethingWithResponse(button);  // set breakpoint here to investigate
}

要件

ヘッダー: XGameUI.h

ライブラリ: xgameruntime.lib

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XGameUI
XGameUIShowMessageDialogResult
Xbox ゲーム ライフ サイクル (NDA トピック)認可が必須です