Loading Type information

The following example uses the Hello sample code to illustrate the LoadTypeInfo function that loads locale-specific type library information when an object is created.

LoadTypeInfo(&phello->m_ptinfoEnglish, IID_IHello, LCID_ENGLISH);
LoadTypeInfo(&phello->m_ptinfoGerman, IID_IHello, LCID_GERMAN);

// LoadTypeInfo - Gets type information of an object's interface from 
// the type library.
// 
// Parameters:
// ppunkStdDispatch - Returns type information.
// clsid     - Interface ID of object in type library.
// lcid - Locale ID of type information to be loaded.
// 
// Return Value:
// HRESULT
// 
// 
HRESULT LoadTypeInfo(ITypeInfo FAR* FAR* pptinfo, REFCLSID clsid,
LCID lcid)
{
    HRESULT hr;
    LPTYPELIB ptlib = NULL;
    LPTYPEINFO ptinfo = NULL;

    *pptinfo = NULL;

    // Load type library.
    hr = LoadRegTypeLib(LIBID_Hello, 2, 0, lcid, &ptlib);
    if (FAILED(hr))
        return hr;

    // Get type information for interface of the object.
    hr = ptlib->GetTypeInfoOfGuid(clsid, &ptinfo);
    if (FAILED(hr))
    {
        ptlib->Release();
        return hr;
    }

    ptlib->Release();
    *pptinfo = ptinfo;
    return NOERROR;
}