IltmmCapture::GetSubObjectDispatch Example for C++

This function determines if the Lens effect filter is available and turns off the effect area (cropping feature).

// This function checks if the Lens effect filter is available
// and turns off the effect area (cropping feature)
void TurnOffLensCropping(IltmmCapture *pCapture)
{
   HRESULT hr;
   IDispatch *pDisp = NULL;
   ILMVLens *pLens = NULL;

   // call the Capture object to retrieve the selected video processor
   hr = pCapture->GetSubObjectDispatch(ltmmCapture_Object_SelVideoProcessor, &pDisp);
   if(SUCCEEDED(hr))
   {
      // see if the selected processor is the Lens Effect processor
      hr = pDisp->QueryInterface(IID_ILMVLens, (void**)&pLens);
      if(SUCCEEDED(hr))
      {
         // disable the effect
         pLens->put_EffectAreaEnabled(VARIANT_FALSE);

         // release the object
         pLens->Release();
      }

      // release the sub object 
      pDisp->Release();
   }
}