我把一个comboBox嵌入到ListCtrl中进行下拉编辑,但是当拖动滚动条的时候,这个框会一直重绘。因此想截获滚动事件,然后把comboBox hide掉,一直截获不到,静待高手指导。

解决方案 »

  1.   

    参考:http://www.comprg.com.cn/detail.asp?hw_id=7045
      

  2.   

    重载CListCtrl,响应WM_HSCROLL/WM_VSCROLL
      

  3.   

    我是基于对话框的MFC程序,没有直接添加WM_HSCROLL和 WM_VSCROLL的消息处理函数选项。ListCtrl也不能通过PreTranslateMessage截获WM_HSCROLL和 WM_VSCROLL消息,那么应该在哪个函数里面截获呢?
      

  4.   

    按那个例子里说的重载CListCtrl,在CEditListCtrl类中添加WM_HSCROLL和 WM_VSCROLL消息处理函数,不行吗?
      

  5.   

    添加WM_HSCROLL和 WM_VSCROLL的消息处理函数,实现代码如下:
    void CEditListCtrl::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    就是不知道怎么把这个消息和OnHScroll关联起来。
    还有LVN_BEGINSCROLL和LVN_ENDSCROLL这两个事件为什么接收不到呢?你知道吗?
      

  6.   

    http://topic.csdn.net/u/20100707/10/d9d5256e-4d5f-44cb-ac8c-310303679b72.htmlhttp://topic.csdn.net/t/20051018/01/4332722.html
      

  7.   

    你们都没有说到点子上,我自己找到了,不给分:
    1。在消息映射里面添加对windows的消息接受处理:
    BEGIN_MESSAGE_MAP(CListCtrlEx, CListCtrl)
    ON_WM_VSCROLL()
    ON_WM_HSCROLL()
    END_MESSAGE_MAP()
    2。在头文件添加消息处理函数
    afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
    3。CPP中实现
    void CListCtrlEx::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    // todo
    CWnd::OnVScroll(nSBCode, nPos, pScrollBar);
    }
    void CListCtrlEx::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
    {
    // todo
    CWnd::OnHScroll(nSBCode, nPos, pScrollBar);
    }