Condividi tramite


Creare nuove interfacce nello stesso oggetto

In questo scenario il server risponde a ogni richiesta di OBJID_CLIENT ottenendo un nuovo puntatore dell'interfaccia allo stesso oggetto.

Nel codice di esempio seguente , m_pUIObj è un puntatore a un oggetto che supporta più di un'interfaccia COM (Component Object Model). Anche se un oggetto esistente viene riutilizzato, viene creato un nuovo puntatore dell'interfaccia ogni volta che l'oggetto viene recuperato, pertanto il conteggio dei riferimenti deve essere decrementato.

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.