Export (0) Print
Expand All

IDWriteLocalizedStrings interface

Represents a collection of strings indexed by locale name.

Members

The IDWriteLocalizedStrings interface inherits from the IUnknown interface. IDWriteLocalizedStrings also has these types of members:

Methods

The IDWriteLocalizedStrings interface has these methods.

MethodDescription
FindLocaleName

Gets the zero-based index of the locale name/string pair with the specified locale name.

GetCount

Gets the number of language/string pairs.

GetLocaleName

Copies the locale name with the specified index to the specified array.

GetLocaleNameLength

Gets the length in characters (not including the null terminator) of the locale name with the specified index.

GetString

Copies the string with the specified index to the specified array.

GetStringLength

Gets the length in characters (not including the null terminator) of the string with the specified index.

 

Remarks

The set of strings represented by an IDWriteLocalizedStrings are indexed by a zero based UINT32 number that maps to a locale. The numeric index for a specific locale is retreived by using the FindLocaleName method.

A common use for the IDWriteLocalizedStrings interface is to hold a list of localized font family names created by using the IDWriteFontFamily::GetFamilyNames method. The following example shows how to get the family name for the "en-us" locale.


IDWriteLocalizedStrings* pFamilyNames = NULL;

// Get a list of localized strings for the family name.
if (SUCCEEDED(hr))
{
    hr = pFontFamily->GetFamilyNames(&pFamilyNames);
}

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;

UINT32 length = 0;

// Get the string length.
if (SUCCEEDED(hr))
{
    hr = pFamilyNames->GetStringLength(index, &length);
}

// Allocate a string big enough to hold the name.
wchar_t* name = new (std::nothrow) wchar_t[length+1];
if (name == NULL)
{
    hr = E_OUTOFMEMORY;
}

// Get the family name.
if (SUCCEEDED(hr))
{
    hr = pFamilyNames->GetString(index, name, length+1);
}


Requirements

Minimum supported client

Windows 7, Windows Vista with SP2 and Platform Update for Windows Vista [desktop apps | Windows Store apps]

Minimum supported server

Windows Server 2008 R2, Windows Server 2008 with SP2 and Platform Update for Windows Server 2008 [desktop apps | Windows Store apps]

Minimum supported phone

Windows Phone 8.1 [Windows Phone Silverlight 8.1 and Windows Runtime apps]

Header

Dwrite.h

Library

Dwrite.lib

DLL

Dwrite.dll

 

 

Community Additions

ADD
Show:
© 2014 Microsoft