Поделиться через


Метод IRawElementProviderFragmentRoot::ElementProviderFromPoint (uiautomationcore.h)

Извлекает поставщик элемента, который находится в указанной точке данного фрагмента.

Синтаксис

HRESULT ElementProviderFromPoint(
  [in]          double                      x,
  [in]          double                      y,
  [out, retval] IRawElementProviderFragment **pRetVal
);

Параметры

[in] x

Тип: double

Горизонтальная экранная координата.

[in] y

Тип: double

Вертикальная экранная координата.

[out, retval] pRetVal

Тип: IRawElementProviderFragment**

Получает указатель на поставщика элемента в (x, y) или NULL , если он не существует. Этот параметр передается неинициализированным.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Возвращаемый поставщик должен соответствовать элементу, который будет получать ввод с помощью мыши в указанной точке.

Если точка находится на этом элементе, но не на каком-либо дочернем элементе, возвращается значение NULL или поставщик корня фрагмента. Если точка находится на элементе другой платформы, размещенной в этом фрагменте, метод возвращает элемент, в котором размещен этот фрагмент (как указано в IRawElementProviderFragment::GetEmbeddedFragmentRoots).

Примеры

В следующем примере показана реализация для списка, размещенного в HWND , дескриптор которого m_controlHwnd. IndexFromY получает индекс элемента списка в позиции курсора, а GetItemByIndex — поставщик модель автоматизации пользовательского интерфейса для этого элемента.

HRESULT STDMETHODCALLTYPE ListProvider::ElementProviderFromPoint(double x, double y, IRawElementProviderFragment** pRetVal)
{
    if (pRetVal == NULL) 
    {
        return E_INVALIDARG;
    }
    POINT pt;
    pt.x = (LONG)x;
    pt.y = (LONG)y;
    ScreenToClient(m_controlHwnd, &pt);
    int itemIndex = this->m_pControl->IndexFromY(m_controlHwnd, pt.y);
    ListItemProvider* pItem = GetItemByIndex(itemIndex);  
    if (pItem != NULL)
    {
        *pRetVal = (IRawElementProviderFragment*)pItem;
        pItem->AddRef();
    }
    else 
    {
        pRetVal = (IRawElementProviderFragment*)this;
        pItem->AddRef();
    }

    return S_OK;
}            

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header uiautomationcore.h (включая UIAutomation.h)

См. также раздел

IRawElementProviderFragmentRoot