Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az esetben a kiszolgáló minden alkalommal ugyanazzal a IAccessible felületmutatóval válaszol egy OBJID_CLIENT kérésre.
A következő példakódban a rendszer lekéri a vezérlőobjektumot a további ablakadatokból, és meghívja a vezérlő metódusát az akadálymentességi kiszolgáló objektumának (az alkalmazás által definiált AccServer-osztálynak) a lekérésére, ha van ilyen. Ha az akadálymentességi kiszolgáló még nem létezik, létrejön.
Az akadálymentességi kiszolgáló objektum létrehozásakor 1 hivatkozási számmal rendelkezik. LresultFromObject többször növeli a hivatkozásszámot, de ezek a hivatkozások megjelennek, ha az ügyfél befejezte az objektumot. A kiszolgáló a vezérlőablak bezárásakor kiadja a hivatkozását.
case WM_GETOBJECT:
{
// Return the IAccessible object.
if ((DWORD)lParam == (DWORD)OBJID_CLIENT)
{
// Get the control.
CustomListControl* pCustomList = (CustomListControl*)(LONG_PTR)GetWindowLongPtr(hwnd, 0);
// Create the accessible object.
AccServer* pAccServer = pCustomList->GetAccServer();
if (pAccServer == NULL)
{
pAccServer = new AccServer(hwnd, pCustomList);
pCustomList->SetAccServer(pAccServer);
}
if (pAccServer != NULL) // NULL if out of memory.
{
LRESULT Lresult = LresultFromObject(IID_IAccessible, wParam, pAccServer);
return Lresult;
}
else return 0;
}
break;
}
case WM_DESTROY:
{
CustomListControl* pCustomList = (CustomListControl*)(LONG_PTR)GetWindowLongPtr(hwnd, 0);
AccServer* pAccServer = pCustomList->GetAccServer();
if (pAccServer!= NULL)
{
// Notify the accessibility object that the control no longer exists.
pAccServer->SetControlIsAlive(false);
// Release the reference created in WM_GETOBJECT.
pAccServer->Release();
}
// Destroy the control.
delete pCustomList;
break;
}