Compartilhar via


IViewObject::Draw

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Este método desenha uma representação de um objeto no contexto de dispositivo especificado.

Syntax

HRESULT Draw( 
  DWORD dwAspect, 
  LONG lindex, 
  void* pvAspect, 
  DVTARGETDEVICE* ptd, 
  HDC hicTargetDev, 
  HDC hdcDraw, 
  const LPRECTL lprcBounds, 
  const LPRECTL lprcWBounds, 
  BOOL (*) (DWORD) pfnContinue, 
  DWORD dwContinue
);

Parameters

  • dwAspect
    [no] Especifica a proporção para ser desenhado, isto é, como o objeto é para ser representado. Representações incluem de conteúdo, um ícone, uma miniatura ou um documento impresso.

    Os valores válidos são extraídos de enumeração DVASPECT.

    Objetos sem janelas permitem somente DVASPECT_CONTENT, DVASPECT_OPAQUE e DVASPECT_TRANSPARENT.

  • lIndex
    [no] Parte o objeto que seja de interesse para a operação desenhar.

    Seu interpretação varia depending on o valor na dwAspect parâmetro. Para obter mais informações, consulte o DVASPECT enumeração.

  • pvAspect
    [no] Ponteiro para informações adicionais em um DVASPECTINFO estrutura que permite otimizações desenho depending on o aspecto especificado.

    Objetos e recipientes que suporte otimizado desenho interfaces suporte recentes esse parâmetro.

    Antigos objetos e recipientes que não não suporte otimizado interfaces desenho sempre especificar NULL para este parâmetro.

  • ptd
    [no] Ponteiro para o DVTARGETDEVICE estrutura que descreve o dispositivo que o objeto deve ser processado para.

    Se NULL, a exibição deve ser processada para o dispositivo destino usar como padrão (geralmente a exibir).

    Um valor Other Than NULL é interpretado em conjunto com hicTargetDev e hdcDraw. Por exemplo, se hdcDraw Especifica uma impressora como contexto de dispositivo, o ptd parâmetro aponta para uma estrutura descrevendo que dispositivo de impressora.

    Os dados podem realmente ser impressas se hicTargetDev é um válido valor ou ele pode ser exibido no modo visualização de impressão se hicTargetDev é NULL.

  • hicTargetDev
    [no] Contexto informações para o dispositivo destino indicado pelo ptd parâmetro do qual o objeto pode extrair dispositivo métricas e testar recursos do dispositivo.

    Se ptd é NULL, o objeto deve ignorar o valor na hicTargetDev parâmetro.

  • hdcDraw
    [no] Contexto de dispositivo no qual desenhar.

    Para um objeto sem janelas, faça o seguinte:

    • O hdcDraw parâmetro deve estar no modo de mapeamento MM_TEXT com suas coordenadas lógicas compatível coordenadas de cliente da janela que contém.
    • O contexto dispositivo deve ser o mesmo estado que normalmente passado por uma mensagem WM_PAINT.
  • lprcBounds
    [no] Ponteiro longo para um RECTL estrutura que especifica o retângulo em hdcDraw e no qual o objeto deve ser desenhado.

    Esse parâmetro controla o posicionamento e alongamento do objeto.

    Este parâmetro deve ser NULL para desenhar um sem janelas no-objeto ativo local. Em todas as outras situações, NULL não é um valor legal e deve resultar em um código de erro E_INVALIDARG.

    Se o contêiner passa um não-NULL valor para um objeto sem janelas, o objeto deve processar o aspecto solicitado para o dispositivo especificado contexto e retângulo.

    Um contêiner pode solicitação isso de um objeto sem janelas para processar uma exibição em segundo lugar, inativo do objeto ou para imprimir o objeto.

  • lprcWBounds
    [no] Se hdcDraw é um contexto dispositivo metarquivo, este parâmetro é um ponteiro longo para um RECTL estrutura especificando o retângulo delimitador no subjacente metarquivo. A estrutura retângulo contém a extensão janela e origem janela.

    Esses valores são úteis para desenho metarquivos.

    O retângulo indicado por lprcBounds está aninhada dentro isso lprcWBounds Retângulo; estiverem em coordenar o mesmo espaço.

    Se hdcDraw não é um contexto dispositivo metarquivo; lprcWBounds será NULL.

  • pfnContinue
    [no] Ponteiro para uma função callback que o objeto exibição deve chamar periodicamente durante uma longa operação de desenho para determinar se a operação deve continuar ou ser cancelada.

    Essa função retorna TRUE para continuar desenho.

    Ele retorna FALSE para parar o desenho no qual maiúsculas e minúsculas Desenhar Retorna DRAW_E_ABORT.

  • dwContinue
    [no] Especifica um valor para transmitir como um parâmetro para a função apontada pelo pfnContinue parâmetro.

    Normalmente, dwContinue é um ponteiro para uma estrutura Application-defined necessária dentro de função callback.

Return Value

Este método oferece suporte a padrão retornar valores E_INVALIDARG e E_OUTOFMEMORY, bem como os valores descritos a seguinte tabela.

Valor Descrição

S_OK

O objeto foi desenhado com êxito.

OLE_E_BLANK

Há dados para desenhar a partir.

DRAW_E_ABORT

Desenhe operação anulada.

VIEW_E_DRAW

Erro no desenho.

DV_E_LINDEX

Valor inválido para lIndex; -1 atualmente somente é com suporte.

DV_E_DVASPECT

Valor inválido para dwAspect.

OLE_E_INVALIDRECT

Retângulo inválido.

Remarks

Um aplicativo contêiner emite um chamar para Desenhar Para criar uma representação de um objeto contido. Este método desenha a (peça especificadolIndex) do (a exibição especificadadwAspect e pvAspect) no (contexto de dispositivo especificadohdcDraw).

A formatação, fontes e outras decisões processamento são feitas on the basis of o dispositivo destino especificado pelo ptd parâmetro.

Há um relacionamento entre o dwDrawAspect valor e o lprcbounds valor. O lprcbounds valor especifica o retângulo em hdcDraw no qual o desenho deve ser mapeada.

Para DVASPECT_THUMBNAIL, DVASPECT_ICON e DVASPECT_SMALLICON, o objeto desenha tudo o que ele quer desenhar e ele mapeia-lo para o espaço fornecido na melhor maneira.

Talvez alguns objetos escalabilidade para ajustá-lo Enquanto algumas podem escalabilidade para ajustá-lo, mas preservar a taxa de proporção. Além disso, algumas talvez escalabilidade para que o desenho aparecerá na largura total, mas o inferior é cortada.

O contêiner pode usar IOleObject::SetExtent Para sugerir um tamanho, mas ele não tem nenhum controle sobre o tamanho processamento. Na maiúsculas e minúsculas de DVASPECT_CONTENT, o Desenhar implementação deve usar as extensões determinadas por SetExtent ou use o retângulo delimitador fornecido na lprcBounds parâmetro.

Para manter compatibilidade com antigos objetos e recipientes que não não suporte otimizações de desenho, todos os objetos, retangular ou não, são exigido para manter uma origem e uma extensão retangular.

Isso permite que o contêiner ainda considerar todos os seu incorporado objetos como retângulos e para transmiti-los apropriado retângulos processamento em Desenhar.

Extensão de um objeto depende de como o aspecto de desenho. Para objetos não retangular, a extensão deve ser o tamanho de um retângulo cobrindo o aspecto inteiro.

Por convenção, a origem de um objeto é o parte superior esquerda canto do retângulo do aspecto DVASPECT_CONTENT.

Em outras palavras, a origem sempre coincide com o parte superior esquerda canto do retângulo mantido pelo site do objeto, mesmo para um objeto não retangular.

Para determinar se a plataforma oferece suporte a esta interface, consulte Determinando suporte COM APIs.

Observação Para chamadores

O valor de hicTargetDevice é geralmente um contexto informações de dispositivo de destino. No entanto, ele pode ser um contexto completo dispositivo.

Observação Para Implementers

Se você estiver escrevendo um manipulador objeto (such as o manipulador usar como padrão) que implementa Desenhar Executando um metarquivo, você deve tratar SetPaletteEntries metarquivo registros de uma forma especial por causa do comportamento de Windows.

A função Windows PlayMetaFile define essas entradas paleta para o primeiro plano. Você deve substituir este usar como padrão por configuração-los para a paleta segundo plano. Uso EnumMetaFile Para fazer isso. Metarquivos Avançados sempre são registrados com a paleta segundo plano portanto, não há necessidade de fazer isso manualmente.

Requirements

Header Oleidl.h, oleidl.idl
Library oleaut32.lib, uuid.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

IViewObject
DVASPECT
DVASPECTINFO
DVTARGETDEVICE
IOleObject::SetExtent

Concepts

Determining Supported COM APIs

Other Resources