[リストへもどる]
一括表示

投稿時間:2003/11/04(Tue) 11:58
投稿者名:大久保
URL :
タイトル:
リッチテキストボックス同時スクロールについて
はじめまして、大久保と申します。
2つのリッチテキストボックスをマウスのスクロールボタンと連動して表示させたいのですが、ずれてしまいます。ご教授お願い致します。
[source]
Public Function WindowProc(ByVal hWnd As Long, _
                           ByVal uMsg As Long, _
                           ByVal wParam As Long, _
                           ByVal lParam As Long) As Long
  Dim lngResult As Long
  Dim lngwParam As Long
  Dim lngNowPos As Long
  
  Dim udtPoint                As tagPOINT
  Dim lngWin32apiResultCode   As Long
  
  Static flg As Boolean
  If flg = False Then
    flg = True
    Select Case uMsg
      Case WM_VSCROLL, WM_MOUSEWHEEL
        lngWin32apiResultCode = SendMessage(hWnd, EM_GETSCROLLPOS, 0, udtPoint)
        With Form1.RichTextBox2
         lngWin32apiResultCode = SendMessage(.hWnd, EM_SETSCROLLPOS, 0, udtPoint)
        End With
    End Select
    flg = False
  End If
  WindowProc = CallWindowProc( _
                    glngHwnd, hWnd, _
                    uMsg, wParam, lParam)
End Function

投稿時間:2003/11/06(Thu) 10:35
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: リッチテキストボックス同時スクロールについて
> 2つのリッチテキストボックスをマウスのスクロールボタンと連動して表示
>させたいのですが、ずれてしまいます。ご教授お願い致します。

どのような場合に、どのようにずれるのでしょうか?

一応試した限りでは問題ないようですが?

投稿時間:2003/11/09(Sun) 00:09
投稿者名:大久保
URL :
タイトル:
Re^2: リッチテキストボックス同時スクロールについて
> > 2つのリッチテキストボックスをマウスのスクロールボタンと連動して表示
> >させたいのですが、ずれてしまいます。ご教授お願い致します。
>
> どのような場合に、どのようにずれるのでしょうか?
>
> 一応試した限りでは問題ないようですが?
お返事遅れて申し訳ありません。
RTBに長い文字列を入れた場合10Byte以上だと顕著に現れます。
Sourceをお送りしたほうがよろしいですか?

投稿時間:2003/11/09(Sun) 08:53
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: リッチテキストボックス同時スクロールについて
一度下記を試して見て下さい。
それとどのようにずれるのでしょうか?
明らかに、RichTextBox1 とRichTextBox2 のトップに表示される行が違うとか
RichTextBox2 の方が遅れて表示されるとか?
スクロールバーをスライドさせた場合とクリックした場合では違うとか、詳しい
症状を教えて頂けませんか。?
念のためOS等の環境(WinXP系だと思うのですが)とRichTextBoxのバージョン(結構違いに
より問題がありますので)

Option Explicit
Private Declare Function SendMessage Lib "user32" _
        Alias "SendMessageA" (ByVal hwnd As Long, _
        ByVal wMsg As Long, ByVal wParam As Long, _
        lParam As Any) As Long
Private Const WM_USER = &H400
Private Const EM_SETSCROLLPOS = WM_USER + 222
Private Const EM_GETSCROLLPOS = WM_USER + 221
Private Type tagPOINT
    x As Long
    y As Long
End Type

Private Sub Command1_Click()
    Timer1.Interval = 150
    Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
    Timer1.Interval = 0
    Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
    Dim udtPoint  As tagPOINT, Ret As Long
    Ret = SendMessage(RichTextBox1.hwnd, EM_GETSCROLLPOS, 0&, udtPoint)
    Ret = SendMessage(RichTextBox2.hwnd, EM_SETSCROLLPOS, 0&, udtPoint)
End Sub

投稿時間:2003/11/11(Tue) 10:25
投稿者名:大久保
URL :
タイトル:
Re^4: リッチテキストボックス同時スクロールについて
Source有難う御座いました。
Timerを使うなんて目から鱗でした。
ずれる理由がわかりました。
表示項目の折り返しがかかる場合マウスでスクロールするとずれますね。
折り返しがかからないように修正しました。
長々とご迷惑おかけ致しました。