Méthode IOleInPlaceSiteWindowless ::ScrollRect (ocidl.h)
Permet à un objet de faire défiler une zone dans son image visuelle active sur l'écran.
Syntaxe
HRESULT ScrollRect(
[in] INT dx,
[in] INT dy,
[in] LPCRECT pRectScroll,
[in] LPCRECT pRectClip
);
Paramètres
[in] dx
Quantité à faire défiler l’axe X.
[in] dy
Quantité à faire défiler l’axe des Y.
[in] pRectScroll
Rectangle à faire défiler, dans les coordonnées client de la fenêtre conteneur. La valeur NULL indique l’objet complet.
[in] pRectClip
Rectangle à découper. Seuls les pixels de défilement dans ce rectangle sont dessinés. Absence de pixels de défilement. Si ce paramètre a la valeur NULL, le rectangle n’est pas coupé.
Valeur retournée
Cette méthode retourne S_OK en cas de réussite.
Remarques
Cette méthode doit prendre en compte le fait que l’appelant peut être transparent et qu’il peut y avoir des objets opaques ou transparents qui se chevauchent. Consultez notes aux implémenteurs ci-dessous pour obtenir des suggestions sur les algorithmes que cette méthode peut utiliser.
Remarques aux implémenteurs
Les conteneurs peuvent implémenter cette méthode de différentes façons. Toutefois, tous doivent tenir compte de la possibilité que l’objet qui demande le défilement soit transparent ou n’ait pas un arrière-plan solide. Les conteneurs doivent également prendre en compte le fait qu’il peut y avoir des objets qui se chevauchent.Le moyen le plus simple d’implémenter cette méthode consiste simplement à redessiner le rectangle à faire défiler.
Une amélioration supplémentaire à cette implémentation simple consiste à utiliser la fonction ScrollDC lorsque l’objet qui demande le défilement est opaque, que l’objet a un arrière-plan solide et qu’aucun objet ne se chevauche.
Les implémentations plus sophistiquées peuvent utiliser la procédure suivante :
- Vérifiez si l’objet est opaque et a un arrière-plan uni, à l’aide de IViewObjectEx ::GetViewStatus. Si ce n’est pas le cas, il suffit d’invalider le rectangle pour faire défiler. Un affinement supplémentaire consiste à case activée si le rectangle de défilement se trouve entièrement dans la zone opaque d’un objet partiellement transparent.
- Obtenez le contexte de l’appareil de fenêtre.
- Découpez les parties opaques de tout objet qui se chevauche retourné par IViewObjectEx ::GetRect.
- Enfin, appelez la fonction ScrollDC .
- Redessinez les parties transparentes précédemment invalidées de tout objet qui se chevauche.
Tous les redessinations générés par cette méthode doivent se produire de manière synchrone avant que cette méthode ne retourne.
Cette méthode doit masquer automatiquement l’insertion pendant l’opération de défilement et doit déplacer l’insertion par les quantités de défilement si elle se trouve à l’intérieur du rectangle de clip.
Configuration requise
Condition requise | Valeur |
---|---|
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 |