IViewObjectEx::QueryHitPoint 메서드(ocidl.h)

점이 개체의 지정된 측면 내에 있는지 여부를 나타냅니다.

구문

HRESULT QueryHitPoint(
  [in]  DWORD   dwAspect,
  [in]  LPCRECT pRectBounds,
  [in]  POINT   ptlLoc,
  [in]  LONG    lCloseHint,
  [out] DWORD   *pHitResult
);

매개 변수

[in] dwAspect

요청된 그리기 측면입니다.

[in] pRectBounds

포함하는 창의 클라이언트 좌표에 있는 개체 경계 사각형입니다. 이 사각형은 컨테이너에서 계산되고 전달되므로 개체가 적중 위치를 의미 있는 해석할 수 있습니다.

[in] ptlLoc

포함된 창의 클라이언트 좌표에 있는 적중 위치입니다.

[in] lCloseHint

컨테이너가 닫힌 것으로 간주하는 HIMETRIC 단위의 제안된 거리입니다. 이 값은 힌트이며 개체는 고유한 방식으로 해석할 수 있습니다. 개체는 이 힌트를 사용하여 출력 해상도를 대략적으로 유추하여 적중 테스트 구현의 광대도를 선택할 수도 있습니다.

[out] pHitResult

HITRESULT 열거형 값으로 표현된 적중에 대한 반환된 정보에 대한 포인터입니다.

반환 값

이 메서드는 성공에 대한 S_OK 반환합니다. 다른 가능한 반환 값은 다음과 같습니다.

반환 코드 설명
E_FAIL
이 메서드는 요청된 측면에 대해 구현되지 않습니다. 대신 DVASPECT_CONTENT 사용합니다.

설명

직사각형이 아닌 개체에 대한 적중 감지를 지원하려면 컨테이너에서 개체에 지정된 위치가 그리기 측면 중 하나 내에 있는지 여부를 묻는 신뢰할 수 있는 방법이 필요합니다. 이 함수는 IViewObjectEx::QueryHitPoint에서 제공합니다.

참고 이 메서드는 IViewObjectEx 인터페이스의 일부이므로 컨테이너는 반드시 서버를 시작할 필요 없이 마우스 적중이 개체 위에 있는지 여부를 파악할 수 있습니다. 적중이 개체 내부에 있는 경우 개체가 현재 위치로 활성화되고 서버가 시작될 가능성이 높습니다.
 
일반적으로 컨테이너는 먼저 지정된 위치가 개체의 사각형 범위 내에 있는지 여부를 빠르게 결정합니다. 위치가 개체의 사각형 범위 내에 있는 경우 컨테이너는 IViewObjectEx::QueryHitPoint 를 호출하여 위치가 실제로 개체 내에 있는지 확인합니다. 적중 위치는 컨테이너 창의 클라이언트 좌표로 전달됩니다. 이 메서드를 호출할 때 개체가 비활성 상태일 수 있으므로 동일한 좌표계에 있는 개체의 경계 사각형도 IPointerInactive::OnInactiveSetCursor에서 발생하는 것과 유사하게 이 메서드에 전달됩니다.

가능한 반환 값은 다음과 같습니다.

  • 외부, 투명 영역
  • 적중으로 간주될 만큼 닫기(작거나 얇은 개체에서 사용할 수 있음)
  • 히트
IViewObjectEx::QueryHitPoint 는 호출되는 개체의 하위 개체와 관련이 없습니다. 마우스 적중이 개체 내에 있는지 여부를 나타내는 것일 뿐입니다.

개체가 지원하는 그리기 측면에 대해 IViewObjectEx::QueryHitPoint를 호출할 수 있습니다. 요청된 그리기 측면에서 지원되지 않는 경우 실패해야 합니다.

투명 개체는 개체 내에서 클릭이 정확히 발생하는 위치에 따라 사용자가 투명 개체 또는 그 뒤에 있는 개체를 선택할 수 있는 복잡한 적중 감지 메커니즘을 구현하려고 할 수 있습니다. 예를 들어 충분히 큰 텍스트를 표시하는 투명한 텍스트 상자를 사용하면 사용자가 문자 사이를 클릭할 때 뒤에 있는 개체(예: 비트맵)를 선택할 수 있습니다. 이러한 이유로 IViewObjectEx::QueryHitPoint 에서 반환되는 정보에는 적중이 불투명하거나 투명한 지역에서 발생하는지 여부에 대한 표시가 포함됩니다.

직사각형이 아닌 투명 적중 감지의 예는 개체가 뒤에 있는 투명한 원 컨트롤입니다(아래 예제의 줄).

대각선이 있는 원의 다이어그램으로, 원 안팎 및 선 근처 영역에 대한 적중 감지 값을 보여 줌

표시된 값은 원에 대한 적중 테스트를 위한 값입니다. 회색 영역은 컨트롤의 일부가 아니지만 가까이 있는 것으로 간주되는 이미지 주변 영역을 나타내기 위해 여기에 표시됩니다. 각 개체는 close에 대한 고유한 정의를 구현하지만 컨테이너에서 제공하는 힌트에 의해 지원되므로 이미지가 더 크거나 작게 확대/축소될 때 근접성을 조정할 수 있습니다.

위의 그림에서 적중, 닫기 및 투명으로 표시된 포인트는 모두 투명으로 표시된 점(하지만 선의 경우 닫기)을 제외하고 원에서 다양한 강도의 적중이 됩니다. 이것은 안타의 다른 강도의 효과를 보여줍니다. 선 클레임이 닫힌 동안 원은 투명하게 응답하고 투명은 닫기보다 약하기 때문에 선이 적중합니다.

구현자에 대한 참고 사항

적어도 DVASPECT_CONTENT 측면에 대해 이 메서드를 구현하려면 IViewObjectEx를 지원하는 개체가 필요합니다. 개체는 정보를 반환하는 것 외에 이 메서드에 대한 응답으로 다른 작업을 수행해서는 안 됩니다. 부작용이 없어야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 ocidl.h

추가 정보

HITRESULT

IPointerInactive::OnInactiveSetCursor

IViewObjectEx