CTreeCtrl控件,增加了复选框,如何捕捉鼠标点击复选框的消息??

解决方案 »

  1.   

    我要捕捉的是鼠标单击这一动作,不是判断tree中的item是否设成check状态。
    应该截获哪一条消息??
      

  2.   

    重载click消息(派生一个树)
    void YourTree::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    CPoint pt;
    ::GetCursorPos(&pt);
    UINT uFlags=0;
    RECT rect;
    GetWindowRect( &rect );
    CPoint ptTest;
    ptTest.x = pt.x - rect.left ;
    ptTest.y = pt.y - rect.top ;
    HTREEITEM hItem = HitTest(ptTest,&uFlags);
    if (hItem!=NULL)
    {
    if( uFlags & TVHT_ONITEMSTATEICON )
    {
    这里就选中了
    }
    }
    *pResult = 0;
    }
      

  3.   

    如果重载click事件的话,那么我要如何才能得知鼠标单击的是复选框而不是其他的例如item或是Tree控件的其他地方呢??
      

  4.   

    程序里面很清楚吗
    if( uFlags & TVHT_ONITEMSTATEICON )就是判断复选框