Partager via


Créer des objets accessibles

Dans ce scénario, le serveur crée un objet accessible en réponse à chaque requête OBJID_CLIENT .

Dans l’exemple de code suivant, un pointeur vers le contrôle est récupéré à partir des données de fenêtre supplémentaires. Cette propriété et le handle de fenêtre sont passés au constructeur de l’objet serveur d’accessibilité personnalisé (AccServer). Cet objet est créé chaque fois que OBJID_CLIENT est reçu.

Lorsque l’objet est créé, le serveur obtient une référence, qui doit être libérée après l’appel de LresultFromObject, afin que l’objet soit détruit dès que le client en a terminé. Notez que LresultFromObject incrémente le nombre de références plusieurs fois, mais il incombe aux applications clientes et au runtime Microsoft Active Accessibility de publier ces références.

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