XGameUiTextEntryOpen
テキストの描画に使用するタイトルの仮想キーボードを開きます。 現在、デスクトップでは実装されていません。
構文
HRESULT XGameUiTextEntryOpen(
const XGameUiTextEntryOption* options,
uint32_t maxLength,
const char* initialText,
uint32_t initialCursorIndex,
XGameUiTextEntryHandle* handle
)
パラメーター
options _In_
型: XGameUiTextEntryOptions
配置やキーボード構成など、キーボードを開いたときにキーボードに適用するオプションの初期セットを示します。
maxLength _In_
型: uint32_t
ユーザーが仮想キーボードに入力できる最大文字数。 この数値は 32K を超えてはなりません。
initialText _In__opt_z_
型: const char*
仮想キーボードに最初に入力される null で終わる文字列。
initialCursorIndex _In_
型: uint32_t
開始文字を基準としたカーソルの初期バイト インデックス。
handle _Out_
型: XGameUiTextEntryHandle
新しく開いた仮想キーボードへのハンドル。
戻り値
型: HRESULT
HRESULT 成功またはエラー コード。 エラー コードの一覧については、「エラー コード」を参照してください。
リターン コード | 説明 |
---|---|
S_OK | 操作に成功しました。 |
E_ACCESSDENIED | ダイアログは既に表示されています。 |
解説
この関数は、仮想キーボードがまだ表示されていない場合でも、ハンドルを取得するとすぐに返します。 他のすべての XGameUiTextEntry 関数は、ハンドルが返されるとすぐに安全に呼び出すことができます。
次の例は、 XGameUiTextEntry 関数の使用方法の基本を示しています。
// Somewhere in the main game loop
// ...
bool someSignal;
bool showingKeyboard;
uint32_t KEYBOARD_MAX_CHARACTERS = 256;
uint32_t KEYBOARD_BUFFER_SIZE = KEYBOARD_MAX_CHARACTERS * 4;
XGameUiTextEntryHandle keyboardInstance;
if (someSignal)
{
XGameUiTextEntryOptions options;
options.inputScope = XGameUiTextEntryInputScope::Default;
options.positionHint = XGameUiTextEntryPositionHint::Bottom;
options.flags = XGameUiTextEntryVisibilityFlags::Default;
if (SUCCEEDED(XGameUiTextEntryOpen(&options,
nullptr,
0,
KEYBOARD_MAX_CHARACTERS,
&keyboardInstance)))
{
showingKeyboard = true;
}
}
if (showingKeyboard)
{
char* buffer[KEYBOARD_BUFFER_SIZE];
uint32_t cursorPosition;
XGameUiTextEntryChangeTypeFlags changeType;
if (SUCCEEDED(XGameUiTextEntryGetState(
keyboardInstance,
&changeType,
&cursorPosition,
nullptr,
nullptr,
KEYBOARD_BUFFER_SIZE,
buffer)))
{
if (changeType & XGameUiTextEntryChangeTypeFlags::TextChanged)
{
// Copy text for in-game rendering
RenderTextInGame(buffer, cursorPosition);
// Assuming the game doesn't want multi-line input
if (strstr(buffer, "\n")
{
XGameUiTextEntryClose(keyboardInstance);
showingKeyboard = false;
}
}
if (showingKeyboard && (changeType & XGameUiTextEntryChangeTypeFlags::KeyboardDismissed))
{
XGameUiTextEntryClose(keyboardInstance);
showingKeyboard = false;
}
}
}
要件
ヘッダー: XGameUI.h
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体