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:
// pptinfo - 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 ** pptinfo, REFCLSID clsid,
LCID lcid)
{
   HRESULT hr;
   LPTYPELIB ptlib = NULL;
   LPTYPEINFO ptinfo = NULL;

   if (pptinfo == NULL)
      return E_INVALIDARG;

   *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;
}