次の方法で共有


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 本体

関連項目

XGameUI
仮想キーボードへの対応