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 |
---|---|
|
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. |
|
Ungültige Region, die durch den hrgnUpdate-Parameter nach dem Scrollen identifiziert wurde. |
|
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. |
|
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
Andere Ressourcen