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) |