Compartilhar via


Criar novos objetos acessíveis

Nesse cenário, o servidor cria um novo objeto acessível em resposta a cada solicitação de OBJID_CLIENT .

No código de exemplo a seguir, um ponteiro para o controle é recuperado dos dados extras da janela. Esse e o identificador de janela são passados para o construtor do objeto AccServer (servidor de acessibilidade personalizado). Esse objeto é criado sempre que OBJID_CLIENT é recebido.

Quando o objeto é criado, o servidor obtém uma referência, que deve ser liberada após chamar LresultFromObject, para que o objeto seja destruído assim que o cliente for concluído com ele. Observe que LresultFromObject incrementa a contagem de referência várias vezes, mas é responsabilidade dos aplicativos cliente e do runtime do Microsoft Active Accessibility liberar essas referências.

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;
}