Udostępnij za pośrednictwem


Tworzenie nowych interfejsów w tym samym obiekcie

W tym scenariuszu serwer odpowiada na każde żądanie OBJID_CLIENT przez uzyskanie nowego wskaźnika interfejsu do tego samego obiektu.

W poniższym przykładowym kodzie m_pUIObj jest wskaźnikiem do obiektu obsługującego więcej niż jeden interfejs modelu obiektów składników (COM). Mimo że istniejący obiekt jest ponownie używany, nowy wskaźnik interfejsu jest tworzony za każdym razem, gdy obiekt jest pobierany, więc liczba odwołań musi zostać zdekrementowana.

case WM_GETOBJECT:
   if ((DWORD)lParam == OBJID_CLIENT)
   {
      // Get a new interface to the same object. 
      IAccessible *pAcc = NULL;
      // The following increments the reference count. 
      m_pUIObj->QueryInterface(IID_IAccessible, (LPVOID*)&pAcc); 
      LRESULT lAcc = LresultFromObject(IID_IAccessible, wParam, 
            (LPUNKNOWN) &pAcc); 
      // Release our reference to the object.             
      pAcc->Release();               
      return lAcc;
   }
   break;  // Fall through to DefWindowProc.