Partager via


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.
Quel que soit le rectangle de défilement et de découpage, seuls les pixels contenus dans le rectangle de site de l’objet sont peints. La zone découverte par l’opération de défilement est invalidée et redessinée immédiatement, avant que cette méthode ne retourne.

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

Voir aussi

IOleInPlaceSiteWindowless

IViewObjectEx ::GetRect

IViewObjectEx ::GetViewStatus