我在单文档(cvie)里面创建一个crichEditctrl(m_edit)控件,我想在cview的左侧显示cricheditctrl的行标,但是响应鼠标滚动消息的时候(用GetFirstVisibleLine)获取的行数总是上次的行数。行标 
===========================cview==============================
1     |m_edit                                          |滚动条
2     |                                                |
3     |
4     |
5     |
我想问的是,如何让滚动条响应 鼠标滚轮事件,并且可以正确的获得当前可视行的行数。
最好有个实例。

解决方案 »

  1.   

    ==============================
    我用的是cricheditctrl没有响应en_vscroll消息
      

  2.   

    ===========================
    我想在左侧显示行标,如果从ceditview派生的话,行标的显示又又问题。
      

  3.   

    其实主要问题在于,如何响应鼠标滚轮事件后获取正确的可视行的行数,是问题的所在。
    我重载了OnMouseWheel,然后在里面用 GetFirstVisibleLine可是获取的可视行的行数总是不对,每次获取的都是上一次的可视行的行数。
      

  4.   

    那就响应EN_UPDATE通知,自己判断GetFirstVisibleLine是否改变。
      

  5.   

    // TODO: If this is a RICHEDIT control, the control will not
    // send this notification unless you override the CRichEditCtrl::OnInitDialog()
    // function to send the EM_SETEVENTMASK message to the control
    // with the ENM_UPDATE flag ORed into the lParam mask.
    =========================
    这个是响应en_update的函数的mfc提示
    1 如果我覆盖OnInitDialog的话会又错误,因为CRichEditCtrl::cwnd
    2 如果我不override the CRichEditCtrl::OnInitDialog()的话,这个消息根本不被响应。http://www.codeproject.com/KB/edit/scintillawnd.aspx
    这个是codeproject的一个例子,它用的是个dll加别人的类库,我想自己实现。
      

  6.   

    谢谢回复,我放弃了,用codeproject的实例了。