Créer des objets accessibles
Dans ce scénario, le serveur crée un nouvel objet accessible en réponse à chaque demande du _ client objid .
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. Cela et le handle de fenêtre sont passés au constructeur de l’objet AccServer (Custom Accessibility Server). Cet objet est créé à chaque fois que le _ client objid 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 a terminé de l’utiliser. Notez que LresultFromObject incrémente le nombre de références plusieurs fois, mais qu’il est de la responsabilité des applications clientes, et du 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;
}