ScrollWindowEx

機能
指定の条件でクライアント領域をスクロールする
Declare Function ScrollWindowEx Lib "user32.dll" _
(ByVal hWnd As Long, ByVal dx As Long, _
ByVal dy As Long, ByVal prcScrool As Long _
ByVal prcClip As Long, hrgnUpDate As RECT, _
ByVal flags As Long) As Long
Declare Function ScrollWindowEx Lib "user32.dll" _
(ByVal hWnd As Integer, ByVal dx As Integer, _
ByVal dy As Integer, ByVal prcScrool As Integer _
ByVal prcClip As Integer, hrgnUpDate As RECT, _
ByVal flags As Integer) As Integer

int ScrollWindowEx(
HWND hWnd,
int dx,
int dy,
CONST RECT *prcScroll,
CONST RECT *prcClip,
HRGN hrgnUpdate,
LPRECT prcUpdate,
UINT flags
);
引数
hWnd

対象のウィンドウのハンドル
dx
水平方向への移動量(負数も可)
dy
同、垂直方向
prcScroll
移動範囲をクライアント座標で指定
(ByVal prcScroll As Longと変更して
0を指定するとクライアント領域全体)
prcClip
クリッピング領域を指定する(lpRectより優先される)
hrgnUpdate
(戻り値)スクロール中の無効化された領域で更新される領域
prcUpdate
同上(通常0)
flags
スクロール方法を指定する定数
戻り値
正常終了のとき                正常値を示す定数の一つ
         NULLREGION = 1               新しい領域が空
         SIMPLEREGION = 2             新しい領域にオーバラップしている境界はない
         COMPLEXREGION = 3            新しい領域にオーバラップしている境界がある
エラーのとき      0
備考
RECT構造体
flagsの定数

SW_ERASE =&H4             ウィンドウを隠す
SW_INVALIDATE = &h2          スクロール後に無効化
SW_SCROLLCHILDREN = &H1        すべての子ウィンドウをスクロール
サンプル
ダウンロード(ScrollWindowEx.lzh 1.51KB)

Private Sub Command1_Click()
Dim prcScroll As RECT, prcClip As RECT, hrgnUpdate As Long, prcUpdate As RECT

With prcScroll
    .Top = 0
    .Left = 0
    .Right = Me.Width
    .Bottom = Me.Height
End With
'Form1のClipControls=False
Call ScrollWindowEx(Me.hWnd, 20, 0, prcScroll, prcClip, hrgnUpdate, prcUpdate, &H1)
  
Me.Refresh
End Sub