IDWriteLocalizedStrings::FindLocaleName 方法 (dwrite.h)

获取具有指定区域设置名称的区域设置名称/字符串对的从零开始的索引。

语法

HRESULT FindLocaleName(
  [in]  WCHAR const *localeName,
  [out] UINT32      *index,
  [out] BOOL        *exists
);

参数

[in] localeName

类型: const WCHAR*

以 null 结尾的字符数组,其中包含要查找的区域设置名称。

[out] index

类型: UINT32*

区域设置名称/字符串对的从零开始的索引。 此方法将 索引 初始化为 UINT_MAX

[out] exists

类型: BOOL*

此方法返回时,如果区域设置名称存在,则包含 TRUE ;否则为 FALSE。 此方法 初始化为FALSE

返回值

类型: HRESULT

如果指定的区域设置名称不存在,则返回值S_OK,但索引UINT_MAX存在FALSE

备注

请注意,如果区域设置名称不存在,则返回值为成功, exists 参数为 FALSE。 如果获取字体的字体系列名称,并且指定的区域设置名称不存在,则一个选项是将索引设置为 0,如下所示。 字体系列始终至少有一个区域设置。

UINT32 index = 0;
BOOL exists = false;

wchar_t localeName[LOCALE_NAME_MAX_LENGTH];

if (SUCCEEDED(hr))
{
    // Get the default locale for this user.
    int defaultLocaleSuccess = GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH);

    // If the default locale is returned, find that locale name, otherwise use "en-us".
    if (defaultLocaleSuccess)
    {
        hr = pFamilyNames->FindLocaleName(localeName, &index, &exists);
    }
    if (SUCCEEDED(hr) && !exists) // if the above find did not find a match, retry with US English
    {
        hr = pFamilyNames->FindLocaleName(L"en-us", &index, &exists);
    }
}

// If the specified locale doesn't exist, select the first on the list.
if (!exists)
    index = 0;

要求

   
最低受支持的客户端 Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 dwrite.h
Library Dwrite.lib
DLL Dwrite.dll

另请参阅

IDWriteLocalizedStrings