Método IViewObjectEx::GetNaturalExtent (ocidl.h)

Fornece dicas de dimensionamento do contêiner para o objeto usar enquanto o usuário o redimensiona.

Sintaxe

HRESULT GetNaturalExtent(
  [in]  DWORD          dwAspect,
  [in]  LONG           lindex,
  [in]  DVTARGETDEVICE *ptd,
  [in]  HDC            hicTargetDev,
  [in]  DVEXTENTINFO   *pExtentInfo,
  [out] LPSIZEL        pSizel
);

Parâmetros

[in] dwAspect

O aspecto de desenho solicitado. Pode ser qualquer um dos valores a seguir, que são definidos pela enumeração DVASPECT .

Valor Significado
DVASPECT_CONTENT
Forneça uma representação do controle para que ele possa ser exibido como um objeto inserido dentro de um contêiner. Geralmente, esse valor é especificado para objetos de documento composto. A apresentação pode ser fornecida para a tela ou impressora.
DVASPECT_DOCPRINT
Forneça uma representação do controle na tela como se ele fosse impresso em uma impressora usando o comando Imprimir no menu Arquivo . Os dados descritos podem representar uma sequência de páginas.
DVASPECT_ICON
Forneça uma representação icônica do controle.
DVASPECT_THUMBNAIL
Forneça uma representação em miniatura de um objeto para que ele possa ser exibido em uma ferramenta de navegação. A miniatura é aproximadamente um bitmap independente de dispositivo de 120 por 120 pixels e 16 cores (recomendado) potencialmente encapsulado em um meta-arquivo.

[in] lindex

Indica a parte do objeto que é de interesse para a operação de desenho. Sua interpretação varia dependendo do valor no parâmetro dwAspect . Consulte a enumeração DVASPECT para obter mais informações.

[in] ptd

Ponteiro para a estrutura do dispositivo de destino que descreve o dispositivo para o qual o objeto deve ser renderizado. Se FOR NULL, a exibição deverá ser renderizada para o dispositivo de destino padrão (normalmente a exibição). Um valor diferente de NULL é interpretado em conjunto com hicTargetDev e hdcDraw. Por exemplo, se hdcDraw especificar uma impressora como o contexto do dispositivo, o parâmetro ptd apontará para uma estrutura que descreve esse dispositivo de impressora. Na verdade, os dados poderão ser impressos se hicTargetDev for um valor válido ou poderão ser exibidos no modo de visualização de impressão se hicTargetDev for NULL.

[in] hicTargetDev

Especifica o contexto de informações para o dispositivo de destino indicado pelo parâmetro ptd do qual o objeto pode extrair métricas do dispositivo e testar os recursos do dispositivo. Se ptd for NULL; o objeto deve ignorar o valor no parâmetro hicTargetDev .

[in] pExtentInfo

Ponteiro para a estrutura DVEXTENTINFO que especifica os dados de dimensionamento.

[out] pSizel

Ponteiro para dimensionar dados retornados pelo objeto . Os dados de dimensionamento retornados são definidos como -1 para qualquer dimensão que não foi ajustada. Ou seja, se cx for -1, a largura não foi ajustada, se cy for -1, a altura não foi ajustada. Se E_FAIL for retornado indicando que nenhum tamanho foi ajustado, pSizel poderá ser NULL.

Valor retornado

Esse método retorna S_OK em caso de êxito. Outros valores retornados possíveis incluem o seguinte.

Código de retorno Descrição
E_FAIL
Esse método não é implementado para o dwAspect especificado ou o tamanho não foi ajustado.
E_NOTIMPL
Esse método não foi implementado.

Comentários

Há duas abordagens gerais para dimensionar um controle. A primeira abordagem oferece a responsabilidade de controle pelo dimensionamento em si; a segunda abordagem dá ao contêiner a responsabilidade de dimensionar o controle. A primeira abordagem é chamada de dimensionamento automático. Há duas alternativas envolvidas na segunda abordagem: dimensionamento de conteúdo e dimensionamento integral.

O método IViewObjectEx::GetNaturalExtent dá suporte ao dimensionamento integral e ao conteúdo. No dimensionamento de conteúdo, o contêiner passa a estrutura DVEXTENTINFO para o objeto no qual o objeto retorna um tamanho sugerido. No dimensionamento integral, o contêiner passa um tamanho preferencial para o objeto em DVEXTENTINFO e o objeto realmente ajusta sua altura. O dimensionamento integral é usado quando o usuário usa elásticos em um novo tamanho no modo de design.

O dimensionamento automático normalmente ocorre com objetos como o controle Label, que redimensiona se a propriedade de dimensionamento automático foi habilitada e o texto associado foi alterado. O dimensionamento automático é tratado de forma diferente, dependendo do estado do objeto.

Se o objeto estiver inativo, ocorrerá o seguinte:

  1. O objeto chama IOleClientSite::RequestNewObjectLayout.
  2. O contêiner chama IOleObject::GetExtent e recupera as novas extensões.
  3. O contêiner chama IOleObject::SetExtent e ajusta as novas extensões.
Se o objeto estiver ativo, ocorrerá o seguinte:
  1. O objeto chama IOleInPlaceSite::OnPosRectChange para especificar que ele requer redimensionamento.
  2. O contêiner chama IOleInPlaceObject::SetObjectRects e especifica o novo tamanho.

Requisitos

   
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

Confira também

IOleClientSite::RequestNewObjectLayout

IOleInPlaceObject::SetObjectRects

IOleInPlaceSite::OnPosRectChange

IOleObject::GetExtent

IOleObject::SetExtent

Iviewobjectex