Método ITextServices::TxDraw (textserv.h)
Desenha o objeto de serviços de texto.
Sintaxe
HRESULT TxDraw(
[in] DWORD dwDrawAspect,
LONG lindex,
[in] void *pvAspect,
[in] DVTARGETDEVICE *ptd,
[in] HDC hdcDraw,
[in] HDC hicTargetDev,
[in] LPCRECTL lprcBounds,
[in] LPCRECTL lprcWBounds,
[in] LPRECT lprcUpdate,
BOOL(* )(DWORD) pfnContinue,
DWORD dwContinue,
LONG lViewId
);
Parâmetros
[in] dwDrawAspect
Tipo: DWORD
Especifica o aspecto a ser desenhado, ou seja, como o objeto deve ser representado. O aspecto de desenho pode ser um dos valores a seguir.
lindex
Tipo: LONG
Sem suporte.
[in] pvAspect
Tipo: void*
Informações para otimizações de desenho.
[in] ptd
Tipo: DVTARGETDEVICE*
O dispositivo de destino.
[in] hdcDraw
Tipo: HDC
Renderizando o contexto do dispositivo.
[in] hicTargetDev
Tipo: HDC
Contexto de informações de destino.
[in] lprcBounds
Tipo: LPCRECTL
O retângulo delimitador (cliente).
[in] lprcWBounds
Tipo: LPCRECTL
O retângulo de recorte para metarquivos.
[in] lprcUpdate
Tipo: LPRECT
A região de atualização dentro de lprcBounds.
pfnContinue
Tipo: BOOL CALLBACK*
Sem suporte.
dwContinue
Tipo: DWORD
Parâmetro a ser passado para continuar a função.
lViewId
Tipo: LONG
Especifica o modo de exibição a ser desenhado.
Valor retornado
Tipo: HRESULT
O valor retornado normalmente é S_OK.
Comentários
Esse método renderiza o objeto de serviços de texto. Ele aceita os mesmos parâmetros que o método IViewObject::D raw correspondente no OLE, com os parâmetros lprcUpdate extra e lViewId . Ele pode ser usado enquanto o host está ativo ou inativo no local.
O parâmetro lprcBounds fornece o retângulo a ser renderizado, também chamado de retângulo do cliente. Esse retângulo representa a posição e a extensão de toda a imagem do objeto de serviços de texto a ser desenhado. Ele é expresso no sistema de coordenadas lógicas do hdcDraw. Se lprcBounds for NULL , o controle deverá estar ativo. Nesse caso, o objeto de serviços de texto deve renderizar o modo de exibição ativo in-loco (ou seja, o retângulo do cliente que pode ser obtido chamando TxGetClientRect no host).
Se o parâmetro lprcUpdate não for NULL, ele fornecerá o retângulo para atualizar dentro desse retângulo cliente, no sistema de coordenadas lógicas do hdcDraw. Se lprcUpdate for NULL, todo o retângulo do cliente deverá ser pintado.
O objeto de serviços de texto deve ser renderizado com o fator de zoom apropriado, que pode ser obtido do retângulo do cliente e do tamanho nativo fornecido por TxGetExtent. Para obter uma discussão sobre o fator de zoom, consulte TxGetExtent.
Comentários gerais sobre hosts OLE e ITextServices::TxDraw (também para ITextServices::OnTxSetCursor e ITextServices::TxQueryHitPoint):
Um host OLE pode chamar o método ITextServices::TxDraw a qualquer momento com qualquer contexto de dispositivo de renderização ou retângulo de cliente. Um objeto OLE inativo retém apenas uma extensão. Para obter o retângulo no qual renderizar, o host chama o método IViewObject::D raw . Esse retângulo é válido apenas para o escopo desse método. Portanto, o mesmo controle pode ser renderizado consecutivamente em retângulos diferentes e contextos de dispositivo diferentes, por exemplo, porque ele é exibido simultaneamente em modos de exibição diferentes na tela.
Normalmente, o retângulo do cliente e o contexto do dispositivo passados para ITextServices::TxDraw não devem ser armazenados em cache, pois isso forçaria o objeto de serviços de texto a recalcular linhas para cada desenho, o que impediria o desempenho. Em vez disso, o objeto de serviços de texto pode armazenar em cache as informações computadas para um retângulo de cliente específico e contexto de dispositivo (como quebras de linha). Na próxima chamada para ITextServices::TxDraw, no entanto, a validade das informações armazenadas em cache deve ser verificada antes de serem usadas e as informações atualizadas devem ser regeneradas, se necessário.
Além disso, tome muito cuidado quando o controle estiver ativo no local. Esse problema é ainda mais complexo, pois ITextServices::TxDraw ainda pode ser chamado para renderizar outros modos de exibição do que aquele que está ativo in-loco. Em outras palavras, o retângulo do cliente passado para ITextServices::TxDraw pode não ser o mesmo que o ativo (passado para ITextServices::OnTxInPlaceActivate e obtido por meio de TxGetClientRect no host).
Requisitos
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | textserv.h |
DLL | Msftedit.dll |
Confira também
Conceitual
Outros recursos
Referência