Partager via


Créer de nouvelles interfaces pour le même objet

Dans ce scénario, le serveur répond à chaque requête OBJID_CLIENT en obtenant un nouveau pointeur d’interface vers le même objet.

Dans l’exemple de code suivant, m_pUIObj est un pointeur vers un objet qui prend en charge plusieurs interfaces COM (Component Object Model). Même si un objet existant est réutilisé, un nouveau pointeur d’interface est créé chaque fois que l’objet est récupéré, de sorte que le nombre de références doit être décrémenté.

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.