ScrollWindowEx 関数 (winuser.h)

ScrollWindowEx 関数は、指定されたウィンドウのクライアント領域の内容をスクロールします。

構文

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

パラメーター

[in] hWnd

種類: HWND

クライアント領域をスクロールするウィンドウにハンドルします。

[in] dx

型: int

水平スクロールの量をデバイス単位で指定します。 このパラメーターは、左にスクロールするには負の値である必要があります。

[in] dy

型: int

垂直スクロールの量をデバイス単位で指定します。 このパラメーターは、上にスクロールするには負の値である必要があります。

[in] prcScroll

型: const RECT*

スクロールするクライアント領域の部分を指定する RECT 構造体へのポインター。 このパラメーターが NULL の場合、クライアント領域全体がスクロールされます。

[in] prcClip

型: const RECT*

クリッピング四角形の座標を含む RECT 構造体へのポインター。 影響を受けるのは、クリッピング四角形内のデバイス ビットのみです。 四角形の外側から内側にスクロールされたビットが塗りつぶされます。四角形の内側から外側にスクロールされたビットは塗りつぶされません。 このパラメーターには NULL を指定できます。

[in] hrgnUpdate

種類: HRGN

スクロールによって無効にされた領域を保持するように変更された領域を処理します。 このパラメーターには NULL を指定できます。

[out] prcUpdate

型: LPRECT

スクロールによって無効にされた四角形の境界を受け取る RECT 構造体へのポインター。 このパラメーターには NULL を指定できます。

[in] flags

型: UINT

スクロールを制御するフラグを指定します。 このパラメーターは、次の値と組み合わせて使用できます。

説明
SW_ERASE
SW_INVALIDATE フラグを指定して指定すると、 WM_ERASEBKGND メッセージをウィンドウに送信して、新しく無効になったリージョンを消去します。
SW_INVALIDATE
スクロール後に hrgnUpdate パラメーターによって識別される領域を無効にします。
SW_SCROLLCHILDREN
prcScroll パラメーターが指す四角形と交差するすべての子ウィンドウをスクロールします。 子ウィンドウは、 dx パラメーターと dy パラメーターで指定されたピクセル数だけスクロールされます。 システム は、 移動しない場合でも、 prcScroll 四角形と交差するすべての子ウィンドウにWM_MOVEメッセージを送信します。
SW_SMOOTHSCROLL
スムーズ スクロールを使用してスクロールします。 flags パラメーターの HIWORD 部分を使用して、スムーズ スクロール操作にかかる時間 (ミリ秒単位) を示します。

戻り値

型: int

関数が成功した場合、戻り値は SIMPLEREGION (四角形の無効化領域)、COMPLEXREGION (非四角形の無効化領域、重複する四角形)、または NULLREGION (無効な領域なし) です。

関数が失敗した場合、戻り値は ERROR です。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

SW_INVALIDATEフラグとSW_ERASEフラグが指定されていない場合、 ScrollWindowEx はスクロール元の領域を無効にしません。 これらのフラグのいずれかが設定されている場合、 ScrollWindowEx はこの領域を無効にします。 この領域は、アプリケーションが UpdateWindow 関数を呼び出すか、 RedrawWindow 関数 (RDW_UPDATENOW または RDW_ERASENOW フラグを指定) を呼び出すか、アプリケーション キューから WM_PAINT メッセージを取得するまで更新されません。

ウィンドウに WS_CLIPCHILDREN スタイルがある場合、 hrgnUpdate および prcUpdate で指定された返される領域は、更新が必要な子ウィンドウ内の領域を含め、更新する必要があるスクロール ウィンドウの合計領域を表します。

SW_SCROLLCHILDREN フラグが指定されている場合、子ウィンドウの一部がスクロールされると、システムは画面を正しく更新しません。 スクロールされた子ウィンドウのソース四角形の外側にある部分は消去されず、新しいコピー先に正しく描画されません。 prcScroll で指定された四角形内に完全に存在しない子ウィンドウを移動するには、DeferWindowPos 関数を使用します。 SW_SCROLLCHILDREN フラグが設定され、キャレット四角形がスクロール四角形と交差する場合は、カーソルの位置が変更されます。

ウィンドウに CS_OWNDCまたは CS_CLASSDC クラス スタイルがあるかどうかに関係なく、すべての入力座標と出力座標 (prcScrollprcClipprcUpdatehrgnUpdate) はクライアント座標として決定されます。 必要に応じて 、LPtoDP 関数と DPtoLP 関数を使用して論理座標との間で変換します。

例については、「 WM_PAINT メッセージを含むテキストのスクロール」を参照してください。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll
API セット ext-ms-win-ntuser-misc-l1-2-0 (Windows 8.1で導入)

関連項目

DPtoLP

DeferWindowPos

LPtoDP

その他のリソース

Rect

RedrawWindow

UpdateWindow