エディットボックスを垂直スクロールさせる <TOP>
SendMessage ウィンドウにメッセージを送信
EM_LINESCROLL(&HB6) MLE内のテキストをスクロールさせる
スクロール文字数を入力し「Enter」押下でEditBoxの文字列およびスクロールバーを戻しています。
Edit1のプロパティは、複数入力行→あり、垂直スクロール→あり、に設定しています。
'================================================================ '= エディットボックスを垂直スクロールさせる '= (EM_LINESCROLL2.bas) '================================================================ #include "Windows.bi" ' スクロールバーのスライダ位置を設定 Declare Function Api_SetScrollPos& Lib "user32" Alias "SetScrollPos" (ByVal hWnd&, ByVal nBar&, ByVal nPos&, ByVal bRedraw&) ' ウィンドウにメッセージを送信 Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) #define EM_LINESCROLL &HB6 'MLE内のテキストをスクロールさせる #define CrLf Chr$(13, 10) Var Shared Edit1 As Object Var Shared Edit2 As Object Var Shared Text1 As Object Var Shared Button1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Edit2.Attach GetDlgItem("Edit2") : Edit2.SetFontSize 14 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var i As Long Var txt As String For i = 1 To 100 txt = txt & Str$(i) & CrLf Next Edit1.SetWindowText txt End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var ScrlNum As Long Var Ret As Long '垂直スクロールする文字の数を指定 ScrlNum = Val(Edit2.GetWindowtext) '垂直スクロール実行 Ret = Api_SendMessage(Edit1.GethWnd, EM_LINESCROLL, 0, ByVal ScrlNum) End Sub '================================================================ '= 数値 + 「Enter」で決定 '================================================================ Declare Sub Edit2_Change edecl () Sub Edit2_Change() ED$ = Edit2.GetWindowText EPos% = InStr(ED$, CrLf) If EPos% <> 0 Then ED$ = Mid$(ED$, 1, EPos% - 1) & Mid$(ED$, EPos% + 2) Edit2.SetWindowText ED$ Ret& = Api_SetScrollPos(Edit1.GethWnd, SB_HORZ, 0, 1) Edit1.SetSelText 0, 0, 1 Edit1.SetFocus End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End