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 | 설명 |
---|---|
|
개체는 이 메서드를 지원하지 않습니다. |
|
인수가 잘못된 경우. |
설명
이 메서드는 개체의 경계 사각형을 검색합니다. 개체에 사각형이 아닌 도형이 있는 경우 이 메서드는 전체 개체 영역을 완전히 포괄하는 가장 작은 사각형을 반환합니다. 직사각형이 아닌 개체의 경우 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 |