Share via


SPWORDPRONUNCIATIONLIST

Other versions of this page are also available for the following:

Windows Mobile Not SupportedWindows Embedded CE Supported

8/28/2008

This structure contains information about possible variations in pronunciation for a given word. It is the start of a linked list of SPWORDPRONUNCIATION structures, and contains the size and actual buffer of all subsequent pronunciations. The structure is used with ISpLexicon::GetPronunciations.

Syntax

typedef struct SPWORDPRONUNCIATIONLIST{
  ULONG ulSize;
  BYTE* pvBuffer;
  SPWORDPRONUNCIATION* pFirstWordPronunciation;
} SPWORDPRONUNCIATIONLIST;

Members

  • ulSize
    Size, in bytes, of the pronunciation buffer (pvBuffer).
  • pvBuffer
    Pointer to the pronunciation buffer.
  • pFirstWordPronunciation
    Pointer to an SPWORDPRONUNCIATION structure representing the first pronunciation in the linked list contained in the buffer specified by pvBuffer.

Remarks

The client should call the Platform SDK memory management function ZeroMemory before using this structure to initialize it, and call CoTaskMemFree to free the buffer allocated during the calls The buffer should not be freed between the calls. ISpLexicon::GetPronunciations reuses the buffer for efficiency and will reallocate it when necessary. For more information about ZeroMemory, see the MSDN Library.

Example

The following example is a code fragment demonstrating the use and creation of an SPWORDPRONUNCIATIONLIST structure.

SPWORDPRONUNCIATIONLIST spwordpronlist;
memset(spwordpronlist, 0, sizeof(spwordpronlist));
pISpLexicon->GetPronunciations(L"resume", 0, 0, &spwordpronlist);
for (SPWORDPRONUNCIATION *pwordpron = spwordpronlist.pFirstWordPronunciation;
wordpron != NULL;
wordpron = pwordpron->pNextWordPronunciation)
{
    DoSomethingWith(pwordpron->ePartOfSpeech, pwordpron->szPronunciation);
}
pISpLexicon->GetPronunciations(L"record", 0, 0, &spwordpronlist);
// repeat the previous for loop to process the pronunciations
CoTaskMemFree(spwordpronlist.pvBuffer);

The following helper class will ensure the correct use of SPWORDPRONUNCIATIONLIST.

class CSpPronList : public SPWORDPRONUNCIATIONLIST
{
    public:
    CSpPronList()
    {
        ZeroMemory(static_cast<SPWORDPRONUNCIATIONLIST*>(this), sizeof(SPWORDPRONUNCIATIONLIST));
    }
    ~CSpPronList()
    {
        CoTaskMemFree(pvBuffer);
    }
};

Using the helper class, the previous example becomes:

CSpPronList spwordpronlist;
pISpLexicon->GetPronunciations(L"resume", 0, 0, &spwordpronlist);
for (SPWORDPRONUNCIATION *pwordpron = spwordpronlist.pFirstWordPronunciation;
wordpron != NULL;
wordpron = pwordpron->pNextWordPronunciation)
{
    DoSomethingWith(pwordpron->ePartOfSpeech, pwordpron->szPronunciation);
}
pISpLexicon->GetPronunciations(L"record", 0, 0, &spwordpronlist);
// repeat the previous for loop to process the pronunciations

Requirements

Header sapi.h, sapi.idl
Windows Embedded CE Windows CE .NET 4.1 and later

See Also

Reference

SAPI Structures