CMyListCtrl 继承自CListCtrl,stytle 是 report如何让Header相应鼠标动作?例如LButtonDown?在继承的类中已添加OnLButtonDown(...)响应消息,但是Header没相应,各位高手请帮忙解决,先谢过了!!

解决方案 »

  1.   

    BEGIN_MESSAGE_MAP(CSortListCtrl, CListCtrl)
    //{{AFX_MSG_MAP(CSortListCtrl)
    ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()void CSortListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    ......
    }
      

  2.   

    我想让 Header 相应OnLButtonDown,Move,Up消息可以吗?谢谢
      

  3.   

    定义自己的HeaderCtrl类class CSortHeaderCtrl : public CHeaderCtrl
    {
    // Construction
    DECLARE_DYNCREATE(CSortHeaderCtrl)
    .......
    然后
    CSortHeaderCtrl m_Header;
    WND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0);
    if (hwnd)
    {
    CWnd* pHeader = CWnd::FromHandlePermanent(hwnd);
    if (pHeader)
    {
    if (!pHeader->IsKindOf(RUNTIME_CLASS(CSortHeaderCtrl)))
    {
    pHeader->Detach();
    m_Header.SubclassWindow(hwnd);
    }
    }
    else
    m_Header.SubclassWindow(hwnd);
    }
    之后处理CSortHeaderCtrl里的消息响应就可以了
      

  4.   

    非常谢谢你,CSortHeaderCtrl m_Header;
    WND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0);
    if (hwnd)
    {
    CWnd* pHeader = CWnd::FromHandlePermanent(hwnd);
    if (pHeader)
    {
    if (!pHeader->IsKindOf(RUNTIME_CLASS(CSortHeaderCtrl)))
    {
    pHeader->Detach();
    m_Header.SubclassWindow(hwnd);
    }
    }
    else
    m_Header.SubclassWindow(hwnd);
    }这段代码是在CMyLisyCtrl的InitDialog中吗?用来替换原来的Header?
      

  5.   

    放到对话框的OnInitDialog和CMyListCtrl的PreSubclassWindow都可以
      

  6.   

    如果放到CMyListCtrl的PreSubclassWindow
    直接
    HWND hwnd = ::GetDlgItem(m_cListCtrl.m_hWnd, 0);
    m_Header.SubclassWindow(hwnd);
    好像就可以:)
      

  7.   

    好的,多谢。btw:能留个联系方式吗,有什么问题可以请教。