クライアント領域をスクロール          <TOP>


例では、コマンドボタンをクリックするたびにスクロール(移動)させています。

ScrollWindowEx 指定したウィンドウのクライアント領域の内容をスクロール

SW_ERASE(&H4) ウィンドウを隠す
SW_INVALIDATE(&H2) スクロール後に無効化
SW_SCROLLCHILDREN(&H1) すべての子ウィンドウをスクロール
 

 

'================================================================
'= クライアント領域をスクロール
'=    (ScrollWindowEx.bas)
'================================================================
#include "Windows.bi"

Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

' 指定したウィンドウのクライアント領域の内容をスクロール
Declare Function Api_ScrollWindowEx& Lib "user32" Alias "ScrollWindowEx" (ByVal hWnd&, ByVal dx&, ByVal dy&, prcScroll As RECT, prcClip As RECT, ByVal hrgnUpdate&, prcUpdate As RECT, ByVal Flags&)

#define SW_ERASE &H4                    'ウィンドウを隠す
#define SW_INVALIDATE &H2               'スクロール後に無効化
#define SW_SCROLLCHILDREN &H1           'すべての子ウィンドウをスクロール

Var Shared Button1 As Object

Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var Scrl As RECT
    Var Clip As RECT
    Var hUpdate As Long
    Var pUpdate As RECT
    Var Ret As Long

    Scrl.Top = 0
    Scrl.Left = 0
    Scrl.Right = GetWidth - Button1.GetWidth
    Scrl.Bottom = GetHeight - Button1.GetHeight

    'クリック毎にx=20、y=10ずつスクロール
    Ret = Api_ScrollWindowEx(GethWnd, 20, 10, Scrl, Clip, hUpdate, pUpdate, SW_SCROLLCHILDREN)
    Refresh
    SetFocus
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End