Vytvoření nových přístupných objektů
V tomto scénáři server vytvoří nový přístupný objekt v reakci na každý OBJID_CLIENT požadavek.
V následujícím příkladu kódu se z dat okna extra načte ukazatel na ovládací prvek. Tento a popisovač okna jsou předány konstruktoru vlastního serveru usnadnění (AccServer) objektu. Tento objekt se vytvoří při každém přijetí OBJID_CLIENT.
Při vytvoření objektu server získá odkaz, který musí být vydán po volání LresultFromObject, aby objekt byl zničen ihned po dokončení klienta. Všimněte si, že LresultFromObject několikrát zvýší počet odkazů, ale za uvolnění těchto odkazů zodpovídá modul runtime Microsoft Active Accessibility.
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;
}