Share via


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.

Valor Significado
DVASPECT_CONTENT
Renderiza uma imagem de tela do conteúdo do texto para o contexto do dispositivo hdcDraw .

Os parâmetros hicTargetDev e ptd fornecem informações sobre o contexto do dispositivo de destino, se houver (geralmente uma impressora).

DVASPECT_DOCPRINT
Renderiza o objeto para o contexto do dispositivo hdcDraw como se ele fosse impresso em uma impressora. Assim, o objeto de serviços de texto pode otimizar para a impressora (por exemplo, não pintar a cor da tela de fundo, se for branco). Além disso, determinados elementos específicos da tela (como a seleção) não devem ser renderizados.

ITextServices::TxDraw deve renderizar o retângulo lprcBounds , começando na posição de rolagem atual.

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 Significado
TXTVIEW_ACTIVE
Desenhe o modo de exibição ativo inplace.
TXTVIEW_INACTIVE
Desenhar um modo de exibição diferente do modo de exibição ativo inplace; por exemplo, uma visualização de impressão.

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

DVTARGETDEVICE

ITextServices

IViewObject::Draw

OnTxInPlaceActivate

Outros recursos

RECT

RECTL

Referência

TxGetClientRect

TxGetExtent

Controles de edição avançada sem janelas