Crear nuevas interfaces en el mismo objeto
En este escenario, el servidor responde a cada solicitud de OBJID_CLIENT obteniendo un nuevo puntero de interfaz al mismo objeto.
En el código de ejemplo siguiente, m_pUIObj es un puntero a un objeto que admite más de una interfaz del modelo de objetos componentes (COM). Aunque se reutiliza un objeto existente, se crea un nuevo puntero de interfaz cada vez que se recupera el objeto, por lo que se debe disminuir el recuento de referencias.
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.