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*

指向传递到 XAsyncRunXAsyncBlock 的指针。

titleText _In_
类型:char*

消息对话框的文本标题。

contentText _In_
类型:char*

显示在消息对话框内的文本。

firstButtonText _In_opt_
类型:char*

在消息对话框的第一个按钮上显示的文本。

secondButtonText _In_opt_
类型:char*

在消息对话框的第二个按钮上显示的文本。

thirdButtonText _In_opt_
类型:char*

在消息对话框的第三个按钮上显示的文本。

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 主题)要求授权