Método IViewObjectEx::QueryHitPoint (ocidl.h)
Indica se um ponto está dentro de um determinado aspecto de um objeto.
Sintaxe
HRESULT QueryHitPoint(
[in] DWORD dwAspect,
[in] LPCRECT pRectBounds,
[in] POINT ptlLoc,
[in] LONG lCloseHint,
[out] DWORD *pHitResult
);
Parâmetros
[in] dwAspect
O aspecto de desenho solicitado.
[in] pRectBounds
Um retângulo delimitador de objeto nas coordenadas do cliente da janela que contém. Esse retângulo é calculado e passado pelo contêiner para que o objeto possa interpretar significativamente o local de ocorrência.
[in] ptlLoc
O local de ocorrência nas coordenadas do cliente da janela que contém.
[in] lCloseHint
Distância sugerida em unidades HIMETRIC que o contêiner considera fechar. Esse valor é uma dica e os objetos podem interpretá-lo de maneira própria. Os objetos também podem usar essa dica para inferir aproximadamente a resolução de saída para escolher a expansão da implementação do teste de ocorrência.
[out] pHitResult
Um ponteiro para retornar informações sobre o hit expresso como valores de enumeração HITRESULT .
Retornar valor
Esse método retorna S_OK com êxito. Outros valores retornados possíveis incluem o seguinte.
Código de retorno | Descrição |
---|---|
|
Esse método não é implementado para o aspecto solicitado. Em vez disso , use DVASPECT_CONTENT . |
Comentários
Para dar suporte à detecção de ocorrências em objetos não retangulares, o contêiner precisa de uma maneira confiável de perguntar a um objeto se um determinado local está dentro de um de seus aspectos de desenho. Essa função é fornecida por IViewObjectEx::QueryHitPoint.
Os valores possíveis retornados incluem:
- Do lado de fora, em uma região transparente
- Perto o suficiente para ser considerado um hit (pode ser usado por objetos pequenos ou finos)
- Atingido
IViewObjectEx::QueryHitPoint pode ser chamado para qualquer um dos aspectos de desenho que um objeto dá suporte. Ele deverá falhar se não houver suporte para o aspecto de desenho solicitado.
Objetos transparentes podem querer implementar um mecanismo complexo de detecção de ocorrências em que o usuário possa selecionar o objeto transparente ou um objeto por trás dele, dependendo de onde exatamente o clique acontece dentro do objeto. Por exemplo, uma caixa de texto transparente mostrando texto grande o suficiente pode permitir que o usuário selecione o objeto atrás, por exemplo, um bitmap, quando o usuário clica entre os caracteres. Por esse motivo, as informações retornadas por IViewObjectEx::QueryHitPoint incluem indicação sobre se o hit ocorre em uma região opaca ou transparente.
Um exemplo de detecção de ocorrência não retangular e transparente é um controle de círculo transparente com um objeto atrás dele (uma linha no exemplo abaixo):
Os valores mostrados são para testes de clique no círculo; as regiões cinzas não fazem parte do controle, mas são mostradas aqui para indicar uma área ao redor da imagem considerada próxima. Cada objeto implementa sua própria definição de close, mas é assistido por uma dica fornecida pelo contêiner para que a proximidade possa ser ajustada à medida que as imagens aumentam ou são menores.
Na imagem acima, os pontos marcados como Hit, Close e Transparent seriam ocorrências de força variável no círculo, com exceção do marcado como Transparente, (mas para a linha, feche). Isso ilustra o efeito da força diferente dos hits. Como o círculo responde transparente enquanto as declarações de linha se fecham, e transparente é mais fraca do que perto, a linha leva o golpe.
Anotações aos implementadores
Um objeto que dá suporte a IViewObjectEx é necessário para implementar esse método pelo menos para o aspecto DVASPECT_CONTENT . O objeto não deve tomar nenhuma outra ação em resposta a esse método além de retornar as informações; não deve haver efeitos colaterais.Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | ocidl.h |