创建新的辅助对象
在此方案中,服务器会创建一个新的可访问对象,以响应每个 OBJID_CLIENT 请求。
在以下示例代码中,从额外的窗口数据中检索指向控件的指针。 此句柄和窗口句柄将传递给自定义辅助功能服务器 (AccServer) 对象的构造函数。 每当收到 OBJID_CLIENT 时,将创建此对象。
创建对象后,服务器将获取引用,该引用必须在调用 LresultFromObject后释放,以便在客户端完成后立即销毁该对象。 请注意,LresultFromObject 多次递增引用计数,但客户端应用程序和 Microsoft Active Accessibility Runtime 负责发布这些引用。
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;
}