使用CEdit控件我已经可以实现两个EDIT同步滚动,使用的是linescroll方法,但是换成richedit控件,linescroll水平滚动只能用发送消息的办法代替,垂直滚动看起来很不连贯,比如当我拖动scrollbar时,两个并不能做到时事同步。更为严重的是,当我选中richedit里面的内容一直往下拉,richedit也滚动了,但是捕捉不到这个事件。请问这些问题该如何解决,弄了好几天了,希望高手能指点一下,提供一下思路

解决方案 »

  1.   


    class CMyDlg : public CDialog
    {
    ...
    CMyRichEditCtrl m_richEdit1;
    CRichEditCtrl m_richEdit2;
    ...
    }
    class CMyRichEditCtrl : public CRichEditCtrl
    {
    ...
    CMyDlg* m_parent;
    ...
    }
    void CMyRichEditCtrl::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    int nFirstVisible = GetFirstVisibleLine();
    if (nFirstVisible >= 0&&m_parent)
    {
         int nFirstVisible2 =m_parent->m_richEdit2.GetFirstVisibleLine();     m_parent->m_richEdit2.LineScroll(nFirstVisible-nFirstVisible2, 0);
    }
    CRichEditCtrl::OnVScroll(nSBCode, nPos, pScrollBar);
    }
      

  2.   

    和我遇到的问题一模一样我很纠结为什么
    选中richedit里面的内容一直往下拉,Scroll也滚动了但是捕捉不到任何消息
    不过没关系没消息我自己发就是了至少可以获得滚动条的trackpos、、、
    我自己产生wm_Vscroll试试