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 .
[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 |
---|---|
|
Cette méthode n’est pas implémentée pour le dwAspect spécifié, ou la taille n’a pas été ajustée. |
|
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 :
- L’objet appelle IOleClientSite::RequestNewObjectLayout.
- Le conteneur appelle IOleObject::GetExtent et récupère les nouvelles étendues.
- Le conteneur appelle IOleObject::SetExtent et ajuste les nouvelles étendues.
- L’objet appelle IOleInPlaceSite::OnPosRectChange pour spécifier qu’il nécessite un redimensionnement.
- 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