Erstellen neuer barrierefreier Objekte
In diesem Szenario erstellt der Server als Antwort auf jede OBJID_CLIENT Anforderung ein neues barrierefreies Objekt.
Im folgenden Beispielcode wird ein Zeiger auf das Steuerelement aus den zusätzlichen Fensterdaten abgerufen. Diese und das Fensterhandle werden an den Konstruktor des AccServer-Objekts (Custom Accessibility Server) übergeben. Dieses Objekt wird immer dann erstellt, wenn OBJID_CLIENT empfangen wird.
Wenn das Objekt erstellt wird, erhält der Server einen Verweis, der nach dem Aufruf von LresultFromObject freigegeben werden muss, damit das Objekt zerstört wird, sobald der Client damit fertig ist. Beachten Sie, dass LresultFromObject die Verweisanzahl mehrmals erhöht, aber es liegt in der Verantwortung von Clientanwendungen und der Microsoft Active Accessibility Runtime, diese Verweise freizugeben.
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;
}