エディットボックスを水平スクロールさせる <TOP>
SendMessage ウィンドウにメッセージを送信
SB_HORZ(0) 標準スクロールバーの水平
EM_LINESCROLL(&HB6) MLE内のテキストをスクロールさせる
スクロール文字数を入力し「Enter」押下でEditBoxの文字列およびスクロールバーを戻しています。
Edit1のプロパティは、複数入力行→あり、垂直オートスクロール→あり、に設定しています。
'================================================================ '= エディットボックスを水平スクロールさせる '= (EM_LINESCROLL.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 SB_HORZ 0 '標準スクロールバーの水平 #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 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, ScrlNum, ByVal CLng(0)) 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