Share via


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
標頭 uiautomationcore.h (包含 UIAutomation.h)

另請參閱

IRawElementProviderFragmentRoot