Поделиться через


Метод IViewObjectEx::QueryHitRect (ocidl.h)

Указывает, находится ли какая-либо точка в прямоугольнике в пределах заданного аспекта рисования объекта.

Синтаксис

HRESULT QueryHitRect(
  [in]  DWORD   dwAspect,
  [in]  LPCRECT pRectBounds,
  [in]  LPCRECT pRectLoc,
  [in]  LONG    lCloseHint,
  [out] DWORD   *pHitResult
);

Параметры

[in] dwAspect

Запрошенный аспект рисования.

[in] pRectBounds

Объект, ограничивающий прямоугольник в клиентских координатах содержащего окна. Этот прямоугольник вычисляется и передается контейнером, чтобы объект смог интерпретировать расположение попадания.

[in] pRectLoc

Прямоугольник проверки попадания, указанный в разделе HIMETRIC units, относительно левого верхнего угла объекта .

[in] lCloseHint

Предлагаемое расстояние в единицах HIMETRIC , которое контейнер считает близким. Это значение является подсказкой, и объекты могут интерпретировать его по-своему. Объекты также могут использовать это указание для приблизительного вывода разрешения выходных данных, чтобы выбрать расширяемость реализации теста попадания.

[out] pHitResult

Указатель на возвращаемые сведения о попадании, выраженные в виде значений перечисления HITRESULT .

Возвращаемое значение

Этот метод возвращает значение S_OK при успешном завершении. Другие возможные возвращаемые значения включают следующее.

Код возврата Описание
E_FAIL
Этот метод не реализован для запрошенного аспекта. Вместо этого используйте DVASPECT_CONTENT.

Комментарии

Контейнерам может потребоваться проверить, перекрывает ли объект определенный аспект рисования другого объекта. Они могут определить, перекрываются ли объекты, запросив область или по крайней мере ограничивающий прямоугольник соответствующего аспекта. Однако более быстрый способ сделать это — вызвать IViewObjectEx::QueryHitRect , чтобы спросить объект, пересекается ли заданный прямоугольник с одним из его аспектов рисования.

Примечание В отличие от IViewObjectEx::QueryHitPoint, этот метод не возвращает HITRESULT_TRANSPARENT или HITRESULT_CLOSE. Он строго хит или пропускается, возвращая HITRESULT_OUTSIDE, если ни одна точка в прямоугольнике не попала, и HITRESULT_HIT, если хотя бы одна точка в прямоугольнике является хитом.
 

Примечания для разработчиков

Объект, поддерживающий IViewObjectEx , необходим для реализации этого метода по крайней мере для DVASPECT_CONTENT аспекта. Объект не должен предпринимать никаких других действий в ответ на этот метод, кроме как возврат сведений; не должно быть побочных эффектов. Если существует какая-либо неоднозначность относительно того, является ли точка попаданием, например из-за того, что координаты не преобразуются точно, объект должен возвращать HITRESULT_HIT всякий раз, когда любая точка в прямоугольнике может быть попаданием в объект. То есть допустимо запрашивать попадание для точки, которая фактически не отображается, но никогда не исправлять утверждение промаха для любой точки, которая находится на отрисованном изображении объекта.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ocidl.h

См. также раздел

HITRESULT

IViewObjectEx