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

Proporciona sugerencias de tamaño del contenedor para que utilice el objeto cuando el usuario cambie las dimensiones.

Sintaxis

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

Parámetros

[in] dwAspect

Aspecto de dibujo solicitado. Puede ser cualquiera de los valores siguientes, que se definen mediante la enumeración DVASPECT .

Valor Significado
DVASPECT_CONTENT
Proporcione una representación del control para que se pueda mostrar como un objeto incrustado dentro de un contenedor. Este valor se suele especificar para los objetos de documento compuesto. La presentación se puede proporcionar para la pantalla o la impresora.
DVASPECT_DOCPRINT
Proporcione una representación del control en la pantalla como si se imprimiesen en una impresora mediante el comando Imprimir del menú Archivo . Los datos descritos pueden representar una secuencia de páginas.
DVASPECT_ICON
Proporcione una representación icónica del control.
DVASPECT_THUMBNAIL
Proporcione una representación en miniatura de un objeto para que se pueda mostrar en una herramienta de exploración. La miniatura es aproximadamente de 120 por 120 píxeles, un mapa de bits independiente del dispositivo (recomendado) de 16 colores que potencialmente se encapsula en un metarchivo.

[in] lindex

Indica la parte del objeto que es de interés para la operación de dibujo. Su interpretación varía según el valor del parámetro dwAspect . Consulte la enumeración DVASPECT para obtener más información.

[in] ptd

Puntero a la estructura del dispositivo de destino que describe el dispositivo para el que se va a representar el objeto. Si es NULL, la vista debe representarse para el dispositivo de destino predeterminado (normalmente la pantalla). Un valor distinto de NULL se interpreta junto con hicTargetDev y hdcDraw. Por ejemplo, si hdcDraw especifica una impresora como contexto del dispositivo, el parámetro ptd apunta a una estructura que describe ese dispositivo de impresora. Los datos se pueden imprimir realmente si hicTargetDev es un valor válido o se puede mostrar en el modo de vista previa de impresión si hicTargetDev es NULL.

[in] hicTargetDev

Especifica el contexto de información para el dispositivo de destino indicado por el parámetro ptd del que el objeto puede extraer las métricas del dispositivo y probar las funciones del dispositivo. Si ptd es NULL; el objeto debe omitir el valor en el parámetro hicTargetDev .

[in] pExtentInfo

Puntero a la estructura DVEXTENTINFO que especifica los datos de tamaño.

[out] pSizel

Puntero al tamaño de los datos devueltos por el objeto . Los datos de dimensionamiento de tamaño devueltos se establecen en -1 para cualquier dimensión que no se haya ajustado. Es decir, si cx es -1, el ancho no se ajustó, si cy es -1, la altura no se ajustó. Si se devuelve E_FAIL indica que no se ha ajustado ningún tamaño, pSizel puede ser NULL.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
E_FAIL
Este método no se implementa para el dwAspect especificado o el tamaño no se ha ajustado.
E_NOTIMPL
Este método no se implementó.

Comentarios

Hay dos enfoques generales para cambiar el tamaño de un control. El primer enfoque da la responsabilidad de controlar el tamaño en sí mismo; el segundo enfoque proporciona a los contenedores la responsabilidad de cambiar el tamaño del control. El primer enfoque se denomina cambio de tamaño automático. Hay dos alternativas implicadas en el segundo enfoque: el ajuste de tamaño del contenido y el ajuste de tamaño entero.

El método IViewObjectEx::GetNaturalExtent admite el tamaño entero y el contenido. En el ajuste de tamaño del contenido, el contenedor pasa la estructura DVEXTENTINFO al objeto en el que el objeto devuelve un tamaño sugerido. En el ajuste de tamaño entero, el contenedor pasa un tamaño preferido al objeto en DVEXTENTINFO y el objeto ajusta realmente su alto. El ajuste de tamaño integral se usa cuando el usuario utiliza un nuevo tamaño en modo de diseño.

Normalmente, el ajuste automático se produce con objetos como el control Etiqueta que cambia de tamaño si la propiedad de ajuste automático se ha habilitado y el texto asociado ha cambiado. El ajuste automático se controla de forma diferente según el estado del objeto.

Si el objeto está inactivo, se produce lo siguiente:

  1. El objeto llama a IOleClientSite::RequestNewObjectLayout.
  2. El contenedor llama a IOleObject::GetExtent y recupera las nuevas extensiones.
  3. El contenedor llama a IOleObject::SetExtent y ajusta las nuevas extensiones.
Si el objeto está activo, se produce lo siguiente:
  1. El objeto llama a IOleInPlaceSite::OnPosRectChange para especificar que requiere cambiar el tamaño.
  2. El contenedor llama a IOleInPlaceObject::SetObjectRects y especifica el nuevo tamaño.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ocidl.h

Consulte también

IOleClientSite::RequestNewObjectLayout

IOleInPlaceObject::SetObjectRects

IOleInPlaceSite::OnPosRectChange

IOleObject::GetExtent

IOleObject::SetExtent

IViewObjectEx