请问如何在得到右键时同时选中它(也就是等同左键的作用),我用了TreeView_SelectItem(this->GetSafeHwnd(),XXX);请问这个XXX用什么才能得到右键击的分支HTREEITEM??
或者有什么其他方式.谢谢!

解决方案 »

  1.   

    希望对你有用
    http://codeguru.earthweb.com/treeview/right_button_menu.shtml
      

  2.   

    你需要得到的是什么是TEXT 还是这个分支的指针?
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    CString m_Root;
    CString m_Pre,m_Old;
    HTREEITEM hSelectedItem ,hRootItem;
    hSelectedItem = m_treeCtrl.GetSelectedItem();
    m_select=m_treeCtrl.GetItemText(hSelectedItem);
    hRootItem=m_treeCtrl.GetParentItem(hSelectedItem);
    m_Root=m_treeCtrl.GetItemText(hRootItem); 
    HTREEITEM hPreItem=m_treeCtrl.GetParentItem(hSelectedItem);
    m_Pre=m_Root;
    m_Old=m_Root;
    if(m_select!="A:")
    {
    while((m_Pre.GetLength()>1)&&(m_Pre!="A:"))

    {
    hRootItem=m_treeCtrl.GetParentItem(hRootItem);
    m_Pre=m_treeCtrl.GetItemText(hRootItem);
    if(m_Pre.GetLength()!=0)
    m_Root=m_Pre;
    }
    m_Pre=m_select;
    if ((m_select.GetLength()>1)&&(m_select!="A:")&&(m_select!=m_oldselect))
    {
    if ((m_Root!=m_Pre)&&(m_Root.GetLength()>1))
    m_select=m_Old+"\\"+m_select;
    while((m_Root!=m_Pre)&&(m_Root.GetLength()>1)&&(m_Pre.GetLength()>1))
    {

    hPreItem=m_treeCtrl.GetParentItem(hPreItem);
    m_Pre=m_treeCtrl.GetItemText(hPreItem);
    if(m_Pre.GetLength()>1)
    m_select=m_Pre+"\\"+m_select;
    }
    m_pRightPaneFrame->m_pListCtrlView->OpenExistFile(m_select); 
    }
    }
    m_oldselect=m_select;
    m_pRightPaneFrame->m_pListCtrlView->m_LeftSelect= m_select;
    *pResult = 0;