为了响应list contorl窗口的头被单击的消息,向导加入了宏:
ON_NOTIFY(HDN_ITEMCLICK, 0, &CCompanyView::OnHdnItemclickList1)问题是:在一个程序所有的list contorl窗口的头单击消息都会发给OnHdnItemclickList1函数,而且在函数中也无法区分到底是由哪个list contorl窗口的头发过来的消息。
请高手指点迷津!

解决方案 »

  1.   

    相应函数的lParam,pNMHeader = (LPNMHEADER) lParam; 这样能吗?
      

  2.   


    void CXhListCtrl::OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
            NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    pNMListView->iSubItem; //当前点击的子项
    }
      

  3.   

    ON_NOTIFY( wNotifyCode, id, memberFxn )
    其中第二个参数应该是控件ID,不知道你为什么写个0
      

  4.   

    pNMListView-> iSubItem;iSubItem 都是0 ,无论是那个list。
      

  5.   

    控件ID啊,怎么成iSubItem了。你不是无法区分哪个listctrl发来的么,难道你希望所有的listctrl的头点击中事件都让这个函数响应么?
      

  6.   

    ON_NOTIFY(HDN_ITEMCLICK, 0, &CCompanyView::OnHdnItemclickList1)
    中的 “0”,换成Id,就不能响应了。你试试就知道了
      

  7.   

    typedef struct tagNMHDR {
    HWND hwndFrom;  // handle of control sending message
    UINT idFrom;// identifier of control sending message
    UINT code;  // notification code; see below
    } NMHDR;
     
      

  8.   

    消息是可以区分的,使用HWND hwndFrom; // handle of control sending message来进行区分,不过注意的是这个hwnd并不是listctrl控件的hwnd,而是listctrl的headerctrl的hwnd,其实我们想一下,也就明白了,因为CHeaderCtrl毕竟也是继承自CWNd的。