다음을 통해 공유


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로 표시됨).

예제

다음 예제에서는 핸들이 m_controlHwndHWND에서 호스트되는 목록 상자에 대한 구현을 보여줍니다. IndexFromY는 커서 위치에서 목록 항목의 인덱스를 검색하고 GetItemByIndex는 해당 항목에 대한 UI 자동화 공급자를 검색합니다.

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