SetThreadPreferredUILanguages 関数 (winnls.h)

現在のスレッドのスレッド優先 UI 言語を設定します。 詳細については、「 ユーザー インターフェイス言語管理」を参照してください。

メモ この関数は、Windows コンソールで安全に使用できる言語を識別するために、オペレーティング システムでも使用されます。
 

構文

BOOL SetThreadPreferredUILanguages(
  [in]            DWORD    dwFlags,
  [in, optional]  PCZZWSTR pwszLanguagesBuffer,
  [out, optional] PULONG   pulNumLanguages
);

パラメーター

[in] dwFlags

設定する言語の形式とフィルター処理を識別するフラグ。

次の 書式フラグ は、スレッド優先 UI 言語に使用する言語形式を指定します。 フラグは相互に排他的であり、既定値はMUI_LANGUAGE_NAME。

MUI_LANGUAGE_IDではなく、MUI_LANGUAGE_NAMEを使用することをお勧めします。

意味
MUI_LANGUAGE_ID
入力パラメーターの言語文字列は、 言語識別子 形式です。
MUI_LANGUAGE_NAME
入力パラメーターの言語文字列は 、言語名 の形式です。
 

次の フィルター フラグは 、言語リストのフィルター処理を指定します。 フラグは相互に排他的です。 既定では、MUI_COMPLEX_SCRIPT_FILTERもMUI_CONSOLE_FILTERも設定しません。 フィルター処理フラグの詳細については、「解説」セクションを参照してください。

意味
MUI_COMPLEX_SCRIPT_FILTER

GetThreadPreferredUILanguages、複雑なスクリプトを持つすべての言語を適切なフォールバックに置き換える必要があります。 このフラグを指定する場合は、他のすべてのパラメーターに NULL を渡す必要があります。

MUI_CONSOLE_FILTER

GetThreadPreferredUILanguages は、コンソール ウィンドウに正しく表示できないすべての言語を、現在のオペレーティング システム設定に置き換える必要があります。 このフラグを指定する場合は、他のすべてのパラメーターに NULL を渡す必要があります。

MUI_RESET_FILTERS
他のフィルター設定を削除して、言語リストのフィルター処理をリセットします。 このフラグを指定する場合は、他のすべてのパラメーターに NULL を渡す必要があります。 このフラグを設定した後、アプリケーションは GetThreadPreferredUILanguages を 呼び出して、フィルター処理されていない完全なリストを取得できます。

[in, optional] pwszLanguagesBuffer

dwFlags で指定された形式の順序付きの null で区切られたリストを含む、null で終わる 2 重の複数文字列バッファーへのポインター。

スレッド優先 UI 言語の一覧をクリアするために、アプリケーションは、このパラメーターを null 文字列または空の二重 null で終わる文字列に設定します。 アプリケーションが言語リストをクリアする場合は、 dwFlags パラメーターに書式フラグまたは 0 を指定する必要があります。

アプリケーションでフィルター処理フラグのいずれかを指定する場合は、このパラメーターを NULL に設定する必要があります。 この場合、関数は成功しますが、スレッド優先言語はリセットされません。

[out, optional] pulNumLanguages

スレッド優先 UI 言語の一覧で関数が設定した言語の数へのポインター。 アプリケーションでフィルター 処理フラグの 1 つを指定する場合、関数はこのパラメーターを NULL に設定する必要があります。

戻り値

関数が成功した場合は TRUE 、それ以外の場合は FALSE を 返します。

注釈

この関数の呼び出し後にアプリケーションがリソースを読み込むと、ユーザーが優先する言語よりもスレッド固有の基本設定が優先されます。

この関数は、優先順に、スレッドに対して最大 5 つの優先言語を設定できます。 言語バッファーに 5 つ以上の有効な言語が含まれている場合、関数は最初の 5 つの有効な言語を設定し、残りの言語を無視します。

アプリケーションが MUI_LANGUAGE_ID フラグを設定してこの関数を呼び出す場合、言語リスト内の文字列は 16 進数言語を使用する必要があります

先頭の 0x を含まず、長さが 4 文字の識別子。 たとえば、en-US は 次のようになります。

は "0409" として渡され、en は "0009" として渡されます。

MUI_LANGUAGE_IDを指定する場合、言語リストの 16 進数の値は、それぞれ実際の言語識別子を表す必要があります。 特に、次のロケール識別子の値を使用して言語識別子に対応することはできません。

この関数を空の言語リストで呼び出し、MUI_CONSOLE_FILTER フラグを設定すると、言語識別子が 0 に設定された SetThreadUILanguage を呼び出すのと同じ効果があります。 言語は、コンソール ウィンドウで使用するために適切に設定されます。

この関数が戻った後、アプリケーションは GetThreadPreferredUILanguages を 呼び出して、結果の言語リストを確認して調べることができます。 MUI_CONSOLE_FILTERまたはMUI_COMPLEX_FILTER が SetThreadPreferredUILanguages によって設定されている場合、 GetThreadPreferredUILanguages 関数は、現在のオペレーティング システムの言語設定を使用してコンソールが表示できないフォールバック言語に置き換えられます。 言語のフォールバックは、言語の LOCALE_SCONSOLEFALLBACKNAME の値に基づいて決定されます。

SetThreadPreferredUILanguages の呼び出しで MUI_COMPLEX_SCRIPT_FILTER フラグを設定すると、GetThreadPreferredUILanguages、Uniscribe を使用してのみレンダリングできる言語でコンソールで表示できない言語を削除し、フォールバック言語を最終的なフォールバックとして挿入します。 このような言語の例としては、アラビア語やさまざまなインド言語があります。

SetThreadPreferredUILanguages の呼び出しで MUI_CONSOLE_FILTER フラグを設定すると、GetThreadPreferredUILanguages は現在のシステム設定で表示できない言語を削除し、フォールバック言語を最終的なフォールバックとして挿入します。これは、コンソールが 1 つのコード ページからの文字の表示に制限されているためです。 たとえば、ユーザー言語が日本語 (日本) で、現在のコンソール コード ページがロシア語 (ロシア) のコード ページである場合、コンソールには、主に一連の文字が見つからない記号として日本語のテキストが表示されます。 GetThreadPreferredUILanguages は、コンソールで読みやすいフォールバック リストから言語を選択します。

メモLoadStringLoadImageFindResource などのリソース読み込み関数でも、GetThreadPreferredUILanguages を呼び出します。
 
コード ページを変更するために、アプリケーションは setlocale 関数または同等の 関数を使用します。

C# シグネチャ

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.Boolean SetThreadPreferredUILanguages(
            System.UInt32 dwFlags,
            System.String pwszLanguagesBuffer,
            ref System.UInt32 pulNumLanguages
            );

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winnls.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

GetThreadPreferredUILanguages

多言語ユーザー インターフェイス

多言語ユーザー インターフェイス関数

SetThreadUILanguage