Partager via


IViewObjectEx::GetNaturalExtent, méthode (ocidl.h)

Fournit des indicateurs de dimensionnement à partir du conteneur que l’objet doit utiliser lorsque l’utilisateur le redimensionne.

Syntaxe

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

Paramètres

[in] dwAspect

Aspect de dessin demandé. Il peut s’agir de l’une des valeurs suivantes, qui sont définies par l’énumération DVASPECT .

Valeur Signification
DVASPECT_CONTENT
Fournissez une représentation du contrôle afin qu’il puisse être affiché en tant qu’objet incorporé à l’intérieur d’un conteneur. Cette valeur est généralement spécifiée pour des objets de document composé. La présentation peut être fournie pour l'écran ou l'imprimante.
DVASPECT_DOCPRINT
Fournissez une représentation du contrôle à l’écran comme s’il était imprimé sur une imprimante à l’aide de la commande Imprimer du menu Fichier . Les données décrites peuvent représenter une séquence de pages.
DVASPECT_ICON
Fournissez une représentation iconique du contrôle.
DVASPECT_THUMBNAIL
Fournissez une représentation miniature d’un objet afin qu’il puisse être affiché dans un outil de navigation. La miniature est une image bitmap indépendante de l’appareil de 120 x 120 pixels et 16 couleurs (recommandée) potentiellement encapsulée dans un métafichier.

[in] lindex

Indique la partie de l’objet qui est intéressante pour l’opération de dessin. Son interprétation varie en fonction de la valeur dans le paramètre dwAspect . Pour plus d’informations, consultez l’énumération DVASPECT .

[in] ptd

Pointeur vers la structure d’appareil cible qui décrit l’appareil pour lequel l’objet doit être rendu. Si la valeur est NULL, la vue doit être affichée pour l’appareil cible par défaut (généralement l’affichage). Une valeur autre que NULL est interprétée conjointement avec hicTargetDev et hdcDraw. Par exemple, si hdcDraw spécifie une imprimante comme contexte d’appareil, le paramètre ptd pointe vers une structure décrivant cet appareil d’imprimante. Les données peuvent en fait être imprimées si hicTargetDev est une valeur valide ou elles peuvent être affichées en mode d’aperçu avant impression si hicTargetDev a la valeur NULL.

[in] hicTargetDev

Spécifie le contexte d’informations de l’appareil cible indiqué par le paramètre ptd à partir duquel l’objet peut extraire les métriques de l’appareil et tester les fonctionnalités de l’appareil. Si ptd a la valeur NULL ; l’objet doit ignorer la valeur dans le paramètre hicTargetDev .

[in] pExtentInfo

Pointeur vers la structure DVEXTENTINFO qui spécifie les données de dimensionnement.

[out] pSizel

Pointeur vers les données de dimensionnement retournées par l’objet. Les données de dimensionnement retournées ont la valeur -1 pour toute dimension qui n’a pas été ajustée. C’est-à-dire que si cx a la valeur -1, la largeur n’a pas été ajustée, si cy a la valeur -1, la hauteur n’a pas été ajustée. Si E_FAIL est retourné indiquant qu’aucune taille n’a été ajustée, pSizel peut avoir la valeur NULL.

Valeur retournée

Cette méthode retourne S_OK en cas de réussite. Les autres valeurs de retour possibles sont les suivantes.

Code de retour Description
E_FAIL
Cette méthode n’est pas implémentée pour le dwAspect spécifié, ou la taille n’a pas été ajustée.
E_NOTIMPL
Cette méthode n’a pas été implémentée.

Notes

Il existe deux approches générales pour dimensionnement d’un contrôle. La première approche donne au contrôle la responsabilité du dimensionnement lui-même; la deuxième approche donne au conteneur la responsabilité du dimensionnement du contrôle. La première approche est appelée dimensionnement automatique. La deuxième approche implique deux alternatives : le dimensionnement du contenu et le dimensionnement intégral.

La méthode IViewObjectEx::GetNaturalExtent prend en charge à la fois le dimensionnement du contenu et du dimensionnement intégral. Dans le dimensionnement du contenu, le conteneur transmet la structure DVEXTENTINFO à l’objet dans lequel l’objet retourne une taille suggérée. Dans le dimensionnement intégral, le conteneur transmet une taille préférée à l’objet dans DVEXTENTINFO, et l’objet ajuste en fait sa hauteur. Le dimensionnement intégral est utilisé lorsque l’utilisateur dispose d’une nouvelle taille en mode conception.

Le dimensionnement automatique se produit généralement avec des objets tels que le contrôle Label qui se redimensionne si la propriété de taille automatique a été activée et que le texte associé a été modifié. Le dimensionnement automatique est géré différemment en fonction de l’état de l’objet.

Si l’objet est inactif, les opérations suivantes se produisent :

  1. L’objet appelle IOleClientSite::RequestNewObjectLayout.
  2. Le conteneur appelle IOleObject::GetExtent et récupère les nouvelles étendues.
  3. Le conteneur appelle IOleObject::SetExtent et ajuste les nouvelles étendues.
Si l’objet est actif, les opérations suivantes se produisent :
  1. L’objet appelle IOleInPlaceSite::OnPosRectChange pour spécifier qu’il nécessite un redimensionnement.
  2. Le conteneur appelle IOleInPlaceObject::SetObjectRects et spécifie la nouvelle taille.

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête ocidl.h

Voir aussi

IOleClientSite::RequestNewObjectLayout

IOleInPlaceObject::SetObjectRects

IOleInPlaceSite::OnPosRectChange

IOleObject::GetExtent

IOleObject::SetExtent

IViewObjectEx