IAccessible::accLocation 메서드(oleacc.h)

IAccessible::accLocation 메서드는 지정된 개체의 현재 화면 위치를 검색합니다. 모든 시각적 개체는 이 메서드를 지원해야 합니다. 소리 개체는 이 메서드를 지원하지 않습니다.

구문

HRESULT accLocation(
  [out] long    *pxLeft,
  [out] long    *pyTop,
  [out] long    *pcxWidth,
  [out] long    *pcyHeight,
  [in]  VARIANT varChild
);

매개 변수

[out] pxLeft

형식: long*

실제 화면 좌표에서 개체 위치의 왼쪽 위 경계의 x 좌표를 받는 변수의 주소입니다.

[out] pyTop

형식: long*

실제 화면 좌표에서 개체 위치의 왼쪽 위 경계의 y 좌표를 받는 변수의 주소입니다.

[out] pcxWidth

형식: long*

개체의 너비를 받는 변수의 주소(픽셀)입니다.

[out] pcyHeight

형식: long*

개체의 높이를 받는 변수의 주소(픽셀)입니다.

[in] varChild

형식: VARIANT

서버가 반환하는 위치가 개체의 위치인지 아니면 개체의 자식 요소 중 하나여야 하는지를 지정합니다. 이 매개 변수는 CHILDID_SELF(개체에 대한 정보를 가져오기 위해) 또는 자식 ID(개체의 자식 요소에 대한 정보를 얻기 위해)입니다. VARIANT 구조를 초기화하는 방법에 대한 자세한 내용은 매개 변수에서 자식 ID를 사용하는 방법을 참조하세요.

반환 값

형식: HRESULT

성공하면 S_OK를 반환합니다. 클라이언트는 항상 출력 매개 변수에 유효한 값이 포함되도록 검사 합니다.

성공하지 못하면 다음 테이블의 값 중 하나 또는 다른 표준 COM 오류 코드를 반환합니다. 자세한 내용은 IAccessible 반환 값 확인을 참조하세요.

Error 설명
DISP_E_MEMBERNOTFOUND
개체는 이 메서드를 지원하지 않습니다.
E_INVALIDARG
인수가 잘못된 경우.

설명

이 메서드는 개체의 경계 사각형을 검색합니다. 개체에 사각형이 아닌 도형이 있는 경우 이 메서드는 전체 개체 영역을 완전히 포괄하는 가장 작은 사각형을 반환합니다. 직사각형이 아닌 개체의 경우 IAccessible::accHitTest를 사용하여 테스트한 경우 개체의 경계 사각형 좌표가 실패할 수 있습니다. 이러한 비사각형 개체의 예로는 단일 항목에 아이콘의 사각형과 아이콘 텍스트에 대한 다른 사각형이 있는 큰 아이콘 모드의 목록 보기 항목이 있습니다. accLocation은 경계 사각형을 반환하므로 해당 사각형의 모든 점이 개체의 실제 범위 내에 있는 것은 아닙니다. 경계 사각형 내의 일부 지점이 개체에 없을 수 있습니다. 자세한 내용은 적중 테스트 및 화면 위치를 통한 탐색을 참조하세요.

참고: 이 메서드는 너비와 높이를 반환합니다. 오른쪽 및 아래쪽 좌표를 원하는 경우 오른쪽 = 왼쪽 + 너비, 아래쪽 = 위쪽 + 높이를 사용하여 계산합니다.

서버 예제

다음 예제에서는 목록 항목이 자식 요소인 사용자 지정 목록 상자에 대한 메서드의 가능한 구현을 보여줍니다. 목록 상자 자체의 경우 호출은 표준 액세스 가능한 개체로 전달되며, 이 개체는 창의 화면 좌표를 반환합니다.

// m_pStdAccessibleObject is the standard accessible object for the control window. 
// m_pControl is the object that represents the control. Its GetItemRect method  
//   retrieves the screen coordinates of the specified item in a zero-based collection. 
// 
HRESULT STDMETHODCALLTYPE AccServer::accLocation( 
    long *pxLeft,
    long *pyTop,
    long *pcxWidth,
    long *pcyHeight,
    VARIANT varChild)
{
    *pxLeft = 0;
    *pyTop = 0;
    *pcxWidth = 0;
    *pcyHeight = 0;
    if (varChild.vt != VT_I4)
    {
        return E_INVALIDARG;
    }
    if (varChild.lVal == CHILDID_SELF)
    {
        return m_pStdAccessibleObject->accLocation(pxLeft, pyTop, pcxWidth, pcyHeight, varChild);
    }
    else
    {
        RECT rect;
        if (m_pControl->GetItemRect(varChild.lVal - 1, &rect) == FALSE)
        {
            return E_INVALIDARG;
        }
        else
        {
            *pxLeft = rect.left;
            *pyTop = rect.top;
            *pcxWidth = rect.right - rect.left;
            *pcyHeight = rect.bottom - rect.top;
            return S_OK;        
        }
    }
};

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 oleacc.h
라이브러리 Oleacc.lib
DLL Oleacc.dll
재배포 가능 파일 Sp6 이상 및 Windows 95를 사용하여 Windows NT 4.0의 활성 접근성 1.3 RDK

추가 정보

활성 접근성 및 Windows Vista 화면 크기 조정

IAccessible

IAccessible::accHitTest

적중 테스트 및 화면 위치를 통한 탐색

변형