怎样能通过鼠标点击选择TreeCtrl中的某一项?某一项被选中有什么消息产生呢?然后我怎么获取该选中的Item的内容呢?

解决方案 »

  1.   

    通过classwizard给TreeCtrl添加相应的控件变量m_Tool,
    然后对TreeCtrl添加消息OnDblclkTreeCtrl函数,在该函数里添加如下代码:HTREEITEM hHit = NULL;
    UINT flag;
    CPoint cpMouse,cpHit;
    CString csDec= _T("");
    GetCursorPos(&cpMouse);
    cpHit = cpMouse;
    hHit = m_Tool.HitTest(cpHit,&flag);
    csDec = m_Tool.GrtItem(hHit );   // csDec 为该选中的Item的内容
      

  2.   

    void CCheckBoxTreeCtrl::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    CPoint pt;
    UINT uiflag;
    GetCursorPos(&pt);
    ScreenToClient(&pt);
    HTREEITEM hItem = HitTest(pt, &uiflag);
    if ((hItem != NULL) && (TVHT_ONITEM & uiflag)) // 当前是点击在ITEM上
    {
    SelectItem(hItem);
    }
    *pResult = 0;
    }
      

  3.   


    我点中了某个Item,可是hHit句柄总是为0,怎么回事?
    HTREEITEM hHit = HitTest(ptCurPos);
      

  4.   

    坐标系的问题,
    GetCursorPos(&pt);
    m_tree.ScreenToClient(&pt); // 转化坐标系
    HTREEITEM hItem = m_tree.HitTest(pt, &uiflag);
      

  5.   

    void CGroupSelect::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control notification handler code here
    HTREEITEM hSelItem = pNMTreeView.itemNew.hItem; // 当前选中项
    *pResult = 0;
    }
      

  6.   

    我是放了CTreeCtrl派生的类CProjectDropTree中了:
    void CProjectDropTree::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    // TODO: Add your control notification handler code here
    CPoint pt;
    UINT uiflag;
    GetCursorPos(&pt);
    ScreenToClient(&pt);
    HTREEITEM hItem = HitTest(pt, &uiflag);
    if ((hItem != NULL) && (TVHT_ONITEM & uiflag)) // 当前是点击在ITEM上
    {
    SelectItem(hItem);
    }
    *pResult = 0;}
      

  7.   

    HTREEITEM hItem = HitTest(pt, &uiflag);hItem 还是为空