ScrollWindowEx-Funktion (winuser.h)

Die ScrollWindowEx-Funktion scrollt den Inhalt des Clientbereichs des angegebenen Fensters.

Syntax

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
);

Parameter

[in] hWnd

Typ: HWND

Handle zum Fenster, in dem der Clientbereich scrollen soll.

[in] dx

Typ: int

Gibt die Menge des horizontalen Bildlaufs in Geräteeinheiten an. Dieser Parameter muss ein negativer Wert sein, um nach links zu scrollen.

[in] dy

Typ: int

Gibt die Menge des vertikalen Bildlaufs in Geräteeinheiten an. Dieser Parameter muss ein negativer Wert sein, um nach oben zu scrollen.

[in] prcScroll

Typ: const RECT*

Zeiger auf eine RECT-Struktur , die den Teil des Clientbereichs angibt, der scrollen soll. Wenn dieser Parameter NULL ist, wird der gesamte Clientbereich gescrollt.

[in] prcClip

Typ: const RECT*

Zeiger auf eine RECT-Struktur , die die Koordinaten des Beschneidungsrechtecks enthält. Nur Gerätebits innerhalb des Beschneidungsrechtecks sind betroffen. Bits, die von der Außenseite des Rechtecks nach innen gescrollt werden, werden gezeichnet; Bits, die von der Innenseite des Rechtecks nach außen gescrollt werden, werden nicht gezeichnet. Dieser Parameter kann NULL sein.

[in] hrgnUpdate

Typ: HRGN

Handle für den Bereich, der geändert wurde, um den Bereich zu enthalten, der durch Scrollen ungültig wurde. Dieser Parameter kann NULL sein.

[out] prcUpdate

Typ: LPRECT

Zeiger auf eine RECT-Struktur , die die Grenzen des Rechtecks empfängt, die beim Scrollen ungültig werden. Dieser Parameter kann NULL sein.

[in] flags

Typ: UINT

Gibt Flags an, die den Bildlauf steuern. Für diesen Parameter ist eine Kombination der folgenden Werte gültig.

Wert Bedeutung
SW_ERASE
Löscht den neu ungültigen Bereich, indem eine WM_ERASEBKGND Nachricht an das Fenster gesendet wird, wenn diese mit dem SW_INVALIDATE-Flag angegeben wird.
SW_INVALIDATE
Ungültige Region, die durch den hrgnUpdate-Parameter nach dem Scrollen identifiziert wurde.
SW_SCROLLCHILDREN
Scrollt alle untergeordneten Fenster, die das Rechteck kreuzen, auf das der prcScroll-Parameter verweist. Die untergeordneten Fenster werden anhand der Anzahl von Pixeln gescrollt, die durch die Parameter dx und dy angegeben werden. Das System sendet eine WM_MOVE Nachricht an alle untergeordneten Fenster, die das prcScroll-Rechteck durchschneiden, auch wenn sie sich nicht bewegen.
SW_SMOOTHSCROLL
Scrollen mithilfe eines reibungslosen Bildlaufs. Verwenden Sie den HIWORD-Teil des Flags-Parameters , um anzugeben, wie lange der Smooth-Scrolling-Vorgang in Millisekunden dauern soll.

Rückgabewert

Typ: int

Wenn die Funktion erfolgreich ist, lautet der Rückgabewert SIMPLEREGION (rechteckiger ungültiger Bereich), COMPLEXREGION (nicht ectangular ungültiger Bereich; überlappende Rechtecke) oder NULLREGION (kein ungültiger Bereich).

Wenn die Funktion fehlschlägt, ist der Rückgabewert ERROR. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn die Flags SW_INVALIDATE und SW_ERASE nicht angegeben sind, wird der Bereich, aus dem ein Bildlauf ausgeführt wird, durch ScrollWindowEx nicht ungültig. Wenn eines dieser Flags festgelegt ist, wird dieser Bereich durch ScrollWindowEx ungültig. Der Bereich wird erst aktualisiert, wenn die Anwendung die UpdateWindow-Funktion aufruft, die RedrawWindow-Funktion aufruft (unter Angabe des RDW_UPDATENOW- oder RDW_ERASENOW-Flags) oder die WM_PAINT Nachricht aus der Anwendungswarteschlange abruft.

Wenn das Fenster über die WS_CLIPCHILDREN-Formatvorlage verfügt, stellen die zurückgegebenen Bereiche, die von hrgnUpdate und prcUpdate angegeben sind, den Gesamtbereich des scrollenden Fensters dar, das aktualisiert werden muss, einschließlich aller Bereiche in untergeordneten Fenstern, die aktualisiert werden müssen.

Wenn das flag SW_SCROLLCHILDREN angegeben ist, aktualisiert das System den Bildschirm nicht ordnungsgemäß, wenn ein Teil eines untergeordneten Fensters gescrollt wird. Der Teil des gescrollten untergeordneten Fensters, der sich außerhalb des Quellrechtecks befindet, wird nicht gelöscht und im neuen Ziel nicht ordnungsgemäß neu gezeichnet. Verwenden Sie die Funktion DeferWindowPos, um untergeordnete Fenster zu verschieben, die nicht vollständig innerhalb des von prcScroll angegebenen Rechtecks liegen. Der Cursor wird neu positioniert, wenn das flag SW_SCROLLCHILDREN festgelegt ist und das Caretrechteck das Bildlaufrechteck überschneidet.

Alle Eingabe- und Ausgabekoordinaten (für prcScroll, prcClip, prcUpdate und hrgnUpdate) werden als Clientkoordinaten bestimmt, unabhängig davon, ob das Fenster den CS_OWNDC oder CS_CLASSDC Klassenstil aufweist. Verwenden Sie die Funktionen LPtoDP und DPtoLP , um bei Bedarf in und aus logischen Koordinaten zu konvertieren.

Beispiele

Ein Beispiel finden Sie unter Scrollen von Text mit der WM_PAINT Nachricht.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-misc-l1-2-0 (eingeführt in Windows 8.1)

Weitere Informationen

DPtoLP

DeferWindowPos

LPtoDP

Andere Ressourcen

RECT

RedrawWindow

UpdateWindow