我想让2个RichEdit的滚动条能够同步已经通过拦截WM_VSCROLL使得在操作第2个RichEdit的滚动条时同步了;现在的问题是,我在第2个RichEdit中随着输入字符的增多,滚动条会逐渐向下,
但这时2个RichEdit却不能同步,我想通过拦截RichEdit的OnChange事件来实现
这个同步,不知道OnChange事件对于那个什么Windows消息呢?或者,有没有更好的方案来解决这个同步问题呢?希望高手能给出代码(我水平太低了)

解决方案 »

  1.   

    研究不是很多,因为滚动条消息中包含滚动条的位置,所以你的两个控件的消息实际上是不同的
    以前做过list的滚动同步,实际上也是因为两个list的内容位置和count不同,所以采用的是设定listbox的selectindex来实现的
    如果Lz想要用消息的话,至少要分析出两个滚动条的行数和当前位置,然后要把消息中的wParam修改后再传过去才行
      

  2.   

    查了下百度,Lz可以按照如下规则修改消息中的wparam
    当wParam的低位字是SB_THUMBTRACK时,wParam的高位字是用户拖动滑块的当前位置。该位置处于滚动条范围的最大值和最小值之间。当wParam的低位字是SB_THUMBPOSITION时,wParam的高位字是用户松开鼠标键时滑块的最终位置。对于其他的滚动条动作,wParam的高位字应被忽略。
      

  3.   

    你看看这是不是你想要的!我帮你写好demo啦!下载地址:
    http://www.ctdisk.com/file/3484999
      

  4.   

    jayqiang兄,我看了你给的代码,效果还差一点点,现在只可以通过拖动滚动条来使得2个RichEdit同步位置,我想在左边RichEdit中最后一行在按回车,或者输入文字过多引起换行时,也能同步位置,不知道可不可以实现呢?
      

  5.   

    问题是这两个Richedit的内容是否需要同步,如果不同步Richedit1在最后输入内容回车换行的时候,那Richedit2是也需要跟着换行吗?不需要管其内容是否一样吗?
      

  6.   

    怎么有这种需求相当于是一模一样了
    如果Richedit2只是看的,不能点,可以考虑用截图方法
    把Richedit1拷貝下來
      

  7.   

    不需要管其内容是否一样,Richedit1在最后输入内容回车换行的时候,Richedit2是跟着换行就可以了,呵呵,让大家觉得奇怪了,其实这是一个打字测试的需求,Richedit2里的内容是只读的,不能更改,之前就载入了固定的数据了。(打字做到单行对照,实在有些难。)