IltmmTargetFormat::CreateTargetFormats Example for C++

HRESULT CreateTargetFormats(IltmmCapture* pCapture)
{
   IltmmTargetFormats*  pformats = NULL; 
   IltmmTargetFormat*   pformat  = NULL; 
   IUnknown* pDICOMFilter; 
   VARIANT_BOOL vb; 

   // get the target formats collection
   HRESULT hr = pCapture->get_TargetFormats(&pformats); 
   if(FAILED(hr)) 
      return hr; 

   // get the DICOM target format object
   hr = pformats->Item(ltmmCapture_TargetFormat_DICOM, &pformat); 
   if(FAILED(hr)) 
   {
      // release the formats collection object
      pformats->Release();
      return hr; 
   }

   // get the UseFilterCache setting for the format
   pformat->get_UseFilterCache(&vb); 
   // not set it to true
   hr = pformat->put_UseFilterCache(VARIANT_TRUE); 
   if(FAILED(hr)) 
   {
      // release the format and collection objects
      pformat->Release();
      pformats->Release();
      return hr; 
   }

   /// get the multiplexer object for this format
   hr = pformat->GetCacheObject(ltmmTargetFormat_Object_Mux, &pDICOMFilter); 
   if(FAILED(hr)) 
   {
      // release the format and collection objects
      pformat->Release();
      pformats->Release();
      return hr; 
   }

   // check to see if the format has a multiplexer dialog for settings
   pformat->HasCacheDialog(ltmmTargetFormat_Dlg_Mux, &vb); 

   // if so, display it
   if (vb == VARIANT_TRUE) 
      pformat->ShowCacheDialog(ltmmTargetFormat_Dlg_Mux, (long)NULL); 

   // release the objects
   pformat->Release();
   pformats->Release();
   pDICOMFilter->Release();

   return S_OK; 
}