Compartir a través de


Crear nuevos objetos accesibles

En este escenario, el servidor crea un nuevo objeto accesible en respuesta a cada solicitud de OBJID_CLIENT .

En el código de ejemplo siguiente, se recupera un puntero al control de los datos de ventana adicionales. Este identificador de ventana y se pasan al constructor del objeto de servidor de accesibilidad personalizado (AccServer). Este objeto se crea cada vez que se recibe OBJID_CLIENT.

Cuando se crea el objeto, el servidor obtiene una referencia, que debe liberarse después de llamar a LresultFromObject, de modo que el objeto se destruye tan pronto como el cliente haya terminado con él. Tenga en cuenta que LresultFromObject incrementa el recuento de referencias varias veces, pero es responsabilidad de las aplicaciones cliente, y el entorno de ejecución de accesibilidad activa de Microsoft, liberar estas referencias.

case WM_GETOBJECT:
{
    // Return the IAccessible object. 
    if ((DWORD)lParam == OBJID_CLIENT)
    {
        // Get the control.  
        CustomListControl* pCustomList = (CustomListControl*)(LONG_PTR)GetWindowLongPtr(hwnd, 0);
        AccServer* pAccServer = new AccServer(hwnd, pCustomList);
        if (pAccServer != NULL)  // NULL if out of memory. 
        {
            LRESULT Lresult = LresultFromObject(IID_IAccessible, wParam, pAccServer);
            pAccServer->Release();
            return Lresult;
        }
        else return 0;
    }
    break;
}