XGameUiShowMessageDialogAsync
Displays UI for a customizable message dialog. The index of the button pressed by the user is contained in the result.
Syntax
HRESULT XGameUiShowMessageDialogAsync(
XAsyncBlock* async,
const char* titleText,
const char* contentText,
const char* firstButtonText,
const char* secondButtonText,
const char* thirdButtonText,
XGameUiMessageDialogButton defaultButton,
XGameUiMessageDialogButton cancelButton
)
Parameters
async _In_
Type: XAsyncBlock*
A pointer to the XAsyncBlock that is passed to XAsyncRun.
titleText _In_
Type: char*
The text title of the message dialog.
contentText _In_
Type: char*
The text displayed inside of the message dialog.
firstButtonText _In_opt_
Type: char*
The text displayed on the first button of the message dialog.
secondButtonText _In_opt_
Type: char*
The text displayed on the second button of the message dialog.
thirdButtonText _In_opt_
Type: char*
The text displayed on the third button of the message dialog.
defaultButton _In_
Type: XGameUiMessageDialogButton
Indicates which button is selected by default when the message dialog is first displayed.
cancelButton _In_
Type: XGameUiMessageDialogButton
Indicates which button represents the cancel action.
Return value
Type: HRESULT
HRESULT success or error code of the async call.
To get the result, call XGameUiShowMessageDialogResult inside the XAsyncBlock callback or after the XAsyncBlock is complete.
Remarks
Like other XGameUI* functions, XGameUiShowMessageDialogAsync renders it's UI outside of the title partition, and the result is composited with the title's output before each frame is sent to the display device. This means that XGameUiShowMessageDialogAsync can be used to present information to a user whether or not the game is even rendering.
Calling for UI will cause your game to enter constrained mode. In constrained mode your title will receive fewer system resources while it is in the background of the UI that has been called for. To learn more about constrained mode and other operational modes for your title read Xbox Game Life Cycle (NDA topic)Authorization required.
The following example code illustrates using this method in a development scenario to create blocking UI waiting for input. This can be particularly useful to pause current execution at the location of a crashing failure and either reporting the crash location or prompting the developer to attach a debugger.
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
}
Requirements
Header: XGameUI.h
Library: xgameruntime.lib
Supported platforms: Windows, Xbox One family consoles and Xbox Series consoles
See also
XGameUI
XGameUIShowMessageDialogResult
Xbox Game Life Cycle (NDA topic)Authorization required