指定の条件でクライアント領域をスクロールする
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
移動範囲をクライアント座標で指定prcClip
(ByVal prcScroll As Longと変更して
0を指定するとクライアント領域全体)
クリッピング領域を指定する(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