Condividi tramite


Metodo IOleInPlaceSiteWindowless::ScrollRect (ocidl.h)

Consente a un oggetto di scorrere un'area nella propria immagine attiva in posizione sullo schermo.

Sintassi

HRESULT ScrollRect(
  [in] INT     dx,
  [in] INT     dy,
  [in] LPCRECT pRectScroll,
  [in] LPCRECT pRectClip
);

Parametri

[in] dx

Quantità di scorrimento dell'asse x.

[in] dy

Quantità di scorrimento dell'asse y.

[in] pRectScroll

Rettangolo da scorrere, nelle coordinate client della finestra contenitore. Un valore NULL indica l'oggetto completo.

[in] pRectClip

Rettangolo da ritagliare. Solo i pixel che scorrono nel rettangolo vengono disegnati. I pixel che scorrono esternamente non vengono disegnati. Se questo parametro è NULL, il rettangolo non viene ritagliato.

Valore restituito

Questo metodo restituisce S_OK se l'operazione ha esito positivo.

Commenti

Questo metodo deve tenere conto del fatto che il chiamante può essere trasparente e che potrebbero esserci oggetti opachi o trasparenti sovrapposti. Per suggerimenti su algoritmi che questo metodo può usare, vedere Note per gli implementatori di seguito.

Note per gli implementatori

I contenitori possono implementare questo metodo in diversi modi. Tuttavia, tutti devono tenere conto della possibilità che l'oggetto che richiede lo scorrimento possa essere trasparente o non avere uno sfondo solido. I contenitori devono anche tenere presente che potrebbero essere presenti oggetti sovrapposti.

Il modo più semplice per implementare questo metodo consiste nel ridisegnare semplicemente il rettangolo per scorrere.

Un miglioramento aggiunto a questa semplice implementazione consiste nell'usare la funzione ScrollDC quando l'oggetto che richiede lo scorrimento è opaco, l'oggetto ha uno sfondo solido e non sono presenti oggetti sovrapposti.

Le implementazioni più sofisticate possono usare la procedura seguente:

  • Controllare se l'oggetto è opaco e ha uno sfondo solido, usando IViewObjectEx::GetViewStatus. In caso contrario, invalidare semplicemente il rettangolo per scorrere. Un ulteriore perfezionamento consiste nel verificare se il rettangolo di scorrimento si trova interamente nell'area opaca di un oggetto parzialmente trasparente.
  • Ottenere il contesto del dispositivo della finestra.
  • Ritaglia le parti opache di qualsiasi oggetto sovrapposto restituito da IViewObjectEx::GetRect.
  • Chiamare infine la funzione ScrollDC .
  • Ridisegnare le parti trasparenti precedentemente invalidate di qualsiasi oggetto sovrapposto.
Indipendentemente dallo scorrimento e dal rettangolo di ritaglio, verranno dipinti solo i pixel contenuti nel rettangolo del sito dell'oggetto. L'area individuata dall'operazione di scorrimento viene invalidata e ridisegnata immediatamente, prima che questo metodo restituisca.

Tutti i ridisegni generati da questo metodo devono verificarsi in modo sincrono prima che questo metodo restituisca.

Questo metodo deve nascondere automaticamente il cursore durante l'operazione di scorrimento e deve spostare il cursore in base agli importi di scorrimento se si trova all'interno del rettangolo di ritaglio.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ocidl.h

Vedi anche

IOleInPlaceSiteWindowless

IViewObjectEx::GetRect

IViewObjectEx::GetViewStatus