スクロールバーのスライダ位置等を取得 <TOP>
スクロールバーのスライダ位置および範囲を取得します。
GetScrollRange スクロール範囲を取得
GetScrollPos スクロールバーのスライダ位置を取得
例では、EditBoxの垂直スクロールバーのスライダ位置と範囲を取得しています。
'================================================================ '= スクロールバーのスライダ位置等を取得
'= (GetScrollPos.bas) '================================================================ #include "Windows.bi" ' スクロール範囲を取得 Declare Function Api_GetScrollRange& Lib "user32" Alias "GetScrollRange" (ByVal hWnd&, ByVal nBar&, lpMinPos&, lpMaxPos&) ' スクロールバーのスライダ位置を取得 Declare Function Api_GetScrollPos& Lib "user32" Alias "GetScrollPos" (ByVal hWnd&, ByVal nBar&) #define SB_HORZ 0 '標準スクロールバーの水平 #define SB_VERT 1 '標準スクロールバーの垂直 #define SB_CTL 2 'スクロールバーコントロールの情報を設定 #define vbCrLf (Chr$(13) & Chr$(10)) 'キャリッジリターンとラインフィード(\r\n) Var Shared Edit1 As Object Var Shared Text1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 '================================================================ '= '================================================================ Declare Function GetScrollbarPos(ByVal hWnd As Long, ByVal Flag As Long) As Long Function GetScrollbarPos(ByVal hWnd As Long, ByVal Flag As Long) As Long Var Ret As Long Ret = Api_GetScrollPos(Edit1.GethWnd, Flag) If Ret <> 0 Then GetScrollbarPos = Ret Else GetScrollbarPos = 0 End If End Function '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var txt As String Var i As Long For i = 1 To 100 If i < 100 Then txt = txt & Right$(Str$(1000 + i), 3) & vbCrLf Else txt = txt & Right$(Str$(1000 + i), 3) End If Next Edit1.SetWindowText txt End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var sMax As Long Var sMin As Long Var nPos As Long Var Ret As Long nPos = GetScrollbarPos(Edit1.GethWnd, SB_VERT) Ret = Api_GetScrollRange(Edit1.GethWnd, SB_VERT, sMin, sMax) Text1.SetWindowText Str$(sMin) & "-" & Str$(nPos) & "-" & Str$(sMax) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End