エディットボックスのスクロール情報          <TOP>


エディットボックスのスクロール情報を取得します。マルチライン(複数行入力あり)の場合のみ

GetScrollInfo スクロール情報取得

 

スクロール最大、最小および表示開始位置を表示させています。

 

 

'================================================================
'= エディットボックスのスクロール情報
'=    (GetScrollInfo.bas)
'================================================================
#include "Windows.bi"

Type SCROLLINFO
    cbSize    As Long    'このレコードのバイトサイズ
    fMask     As Long    '取得・設定する値を指定するマスクフラグ
    nMin      As Long    'スクロール領域の最小値
    nMax      As Long    'スクロール領域の最大値
    nPage     As Long    'サム(つまみ)のサイズ
    nPos      As Long    'サムの位置
    nTrackPos As Long    'ドラッグ中のサムの位置
End Type

' スクロール情報取得
Declare Function Api_GetScrollInfo& Lib "user32" Alias "GetScrollInfo" (ByVal hWnd&, ByVal fBar&, lpScrollInfo As SCROLLINFO)

#define SB_HORZ 0                       '標準スクロールバーの水平
#define SB_VERT 1                       '標準スクロールバーの垂直
#define SB_CTL 2                        'スクロールバーコントロールの情報を設定
#define SIF_ALL (&H1 Or &H2 Or &H4 Or &H10) 'SIF_RANGE Or SIF_PAGE Or SIF_POS Or SIF_TRACKPOS
#define SIF_DISABLENOSCROLL &H8         '無効なパラメータが指定されても消去せずに使用不能にする
#define SIF_PAGE &H2                    'nPageを設定することを明示
#define SIF_POS &H4                     'nPosを設定することを明示
#define SIF_RANGE &H1                   'nMinとnMaxを設定することを明示
#define SIF_TRACKPOS &H10               'nTrackPosフィールドにつまみの位置をセットすることを明示
#define vbCrLf (Chr$(13) & Chr$(10))    'キャリッジリターンとラインフィード(\r\n)

Var Shared Edit1 As Object
Var Shared text(5) As Object

Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14
For i = 0 To 5
    Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1)))
    Text(i).SetFontSize 14
Next

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var i As Integer
    Var txt As String

    For i = 0 To 100
        txt = txt & Format$(i, "### ") & "http://tokovalue.web.infoseek.co.jp" & vbCrLf
        Edit1.SetWindowText txt
    Next
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var si As SCROLLINFO
    Var Ret As Long
    
    si.cbSize = Len(si)
    si.fMask = SIF_ALL
    
    Ret = Api_GetScrollInfo(Edit1.GethWnd, SB_VERT, si)
    Text(3).SetWindowText Format$(si.nMax, "###")
    Text(4).SetWindowText Format$(si.nMin, "###")
    Text(5).SetWindowText Format$(si.nPos, "###")
End Sub

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