如何锁定列表的列啊?高手指点下,本人刚学~

解决方案 »

  1.   

    控件的消息映射使用 ON_NOTIFY_REFLECT,也就是该写虚拟成员函数 OnChildNotify:
    BOOL CLockableHeader::OnChildNotify(UINT msg, WPARAM wp, LPARAM lp, LRESULT* pRes)
    {
       NMHDR& nmh = *(NMHDR*)lp;
       if (nmh.code==HDN_BEGINTRACKW || nmg.code==HDN_BEGINTRACKA)
       return *pRes=TRUE;
       ......
    }
      

  2.   

    3#楼正确.如果要保持界面一致性,在锁定列时要改变其宽度光标(不显示左右光标),处理鼠标事件:
    BOOL Cxxx::OnSetCursor(CWnd* pWnd, UINT nHit, UINT msg)
    {
         return m_b锁定变量 ? TRUE : Cxxx::OnSetCursor(pWnd, nHit, msg);
    }