Funzione ScrollWindowEx (winuser.h)

La funzione ScrollWindowEx scorre il contenuto dell'area client della finestra specificata.

Sintassi

int ScrollWindowEx(
  [in]  HWND       hWnd,
  [in]  int        dx,
  [in]  int        dy,
  [in]  const RECT *prcScroll,
  [in]  const RECT *prcClip,
  [in]  HRGN       hrgnUpdate,
  [out] LPRECT     prcUpdate,
  [in]  UINT       flags
);

Parametri

[in] hWnd

Tipo: HWND

Gestire nella finestra in cui deve essere eseguito lo scorrimento dell'area client.

[in] dx

Tipo: int

Specifica la quantità, in unità di dispositivo, dello scorrimento orizzontale. Questo parametro deve essere un valore negativo per scorrere verso sinistra.

[in] dy

Tipo: int

Specifica la quantità, in unità di dispositivo, dello scorrimento verticale. Questo parametro deve essere un valore negativo per scorrere verso l'alto.

[in] prcScroll

Tipo: const RECT*

Puntatore a una struttura RECT che specifica la parte dell'area client da scorrere. Se questo parametro è NULL, viene eseguito lo scorrimento dell'intera area client.

[in] prcClip

Tipo: const RECT*

Puntatore a una struttura RECT contenente le coordinate del rettangolo di ritaglio. Sono interessati solo i bit del dispositivo all'interno del rettangolo di ritaglio. I bit scorrevoli dall'esterno del rettangolo all'interno vengono dipinti; i bit scorrevoli dall'interno del rettangolo all'esterno non vengono dipinti. Questo parametro può essere NULL.

[in] hrgnUpdate

Tipo: HRGN

Handle per l'area modificata per contenere l'area invalidata eseguendo lo scorrimento. Questo parametro può essere NULL.

[out] prcUpdate

Tipo: LPRECT

Puntatore a una struttura RECT che riceve i limiti del rettangolo invalidato tramite scorrimento. Questo parametro può essere NULL.

[in] flags

Tipo: UINT

Specifica i flag che controllano lo scorrimento. Questo parametro può essere una combinazione dei valori seguenti.

Valore Significato
SW_ERASE
Cancella l'area appena invalidata inviando un messaggio di WM_ERASEBKGND alla finestra quando specificato con il flag SW_INVALIDATE.
SW_INVALIDATE
Invalida l'area identificata dal parametro hrgnUpdate dopo lo scorrimento.
SW_SCROLLCHILDREN
Scorre tutte le finestre figlio che intersecano il rettangolo a cui punta il parametro prcScroll . Le finestre figlio vengono scorrevoli in base al numero di pixel specificati dai parametri dx e dy . Il sistema invia un messaggio WM_MOVE a tutte le finestre figlio che intersecano il rettangolo prcScroll , anche se non si spostano.
SW_SMOOTHSCROLL
Scorre con scorrimento smussato. Usare la parte HIWORD del parametro flags per indicare quanto tempo, in millisecondi, deve essere eseguita l'operazione di scorrimento uniforme.

Valore restituito

Tipo: int

Se la funzione ha esito positivo, il valore restituito è SIMPLEREGION (area invalidata rettangolare), COMPLEXREGION (area invalidata nonrectangulare; rettangoli sovrapposti) o NULLREGION (nessuna area invalidata).

Se la funzione ha esito negativo, il valore restituito è ERROR. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Se i flag SW_INVALIDATE e SW_ERASE non vengono specificati, ScrollWindowEx non invalida l'area da cui viene eseguito lo scorrimento. Se uno di questi flag è impostato, ScrollWindowEx invalida questa area. L'area non viene aggiornata finché l'applicazione non chiama la funzione UpdateWindow , chiama la funzione RedrawWindow (specificando il flag RDW_UPDATENOW o RDW_ERASENOW) o recupera il messaggio WM_PAINT dalla coda dell'applicazione.

Se la finestra ha lo stile WS_CLIPCHILDREN , le aree restituite specificate da hrgnUpdate e prcUpdate rappresentano l'area totale della finestra a scorrimento che deve essere aggiornata, incluse tutte le aree nelle finestre figlio che richiedono l'aggiornamento.

Se viene specificato il flag di SW_SCROLLCHILDREN, il sistema non aggiorna correttamente la schermata se viene eseguito lo scorrimento di una finestra figlio. La parte della finestra figlio scorrevole che si trova all'esterno del rettangolo di origine non viene cancellata e non viene ridisegnata correttamente nella nuova destinazione. Per spostare le finestre figlio che non si trovano completamente all'interno del rettangolo specificato da prcScroll, usare la funzione DeferWindowPos . Il cursore viene riposizionato se il flag SW_SCROLLCHILDREN è impostato e il rettangolo del cursore interseca il rettangolo di scorrimento.

Tutte le coordinate di input e output (per prcScroll, prcClip, prcUpdate e hrgnUpdate) vengono determinate come coordinate client, indipendentemente dal fatto che la finestra abbia lo stile della classe CS_OWNDC o CS_CLASSDC . Usare le funzioni LPtoDP e DPtoLP per eseguire la conversione da e verso coordinate logiche, se necessario.

Esempio

Per un esempio, vedere Scorrimento del testo con il messaggio WM_PAINT.

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll
Set di API ext-ms-win-ntuser-misc-l1-2-0 (introdotto in Windows 8.1)

Vedi anche

DPtoLP

DeferWindowPos

LPtoDP

Altre risorse

RECT

RidisegnaWindow

UpdateWindow