想在OnSelChanged中做些操作,所以必须在选择一个Item后让它失去被选中状态,不然下次接着选这个Item将无效。我用SelectItem(NULL)让它失去选中状态,结果发现SelectItem(NULL)后变成RootItem成为被选中状态了,难道必须有一个Item成为选中状态吗该怎么办呢

解决方案 »

  1.   

    没有问题啊,我用一个按钮试的,tree属性设为show selection always
    #define MAXTEXTLEN 50HTREEITEM GetItemByName(HWND hWnd, HTREEITEM hItem, 
                            LPCTSTR szItemName)
    {
        // If hItem is NULL, start search from root item.
        if (hItem == NULL)
            hItem = (HTREEITEM)SendMessage(hWnd, TVM_GETNEXTITEM,
                                           TVGN_ROOT, 0);
        while (hItem != NULL)
        {
            char szBuffer[MAXTEXTLEN+1];
            TV_ITEM item;        item.hItem = hItem;
            item.mask = TVIF_TEXT | TVIF_CHILDREN;
            item.pszText = szBuffer;
            item.cchTextMax = MAXTEXTLEN;
            SendMessage(hWnd, TVM_GETITEM, 0, (LPARAM)&item);        // Did we find it?
            if (lstrcmp(szBuffer, szItemName) == 0)
                return hItem;        // Check whether we have child items.
            if (item.cChildren)
            {
                // Recursively traverse child items.
                HTREEITEM hItemFound, hItemChild;            hItemChild = (HTREEITEM)SendMessage(hWnd, TVM_GETNEXTITEM,
                                                    TVGN_CHILD, (LPARAM)hItem);
                hItemFound = GetItemByName(hWnd, hItemChild, szItemName);            // Did we find it?
                if (hItemFound != NULL)
                    return hItemFound;
            }        // Go to next sibling item.
            hItem = (HTREEITEM)SendMessage(hWnd, TVM_GETNEXTITEM,
                                           TVGN_NEXT, (LPARAM)hItem);
        }    // Not found.
        return NULL;} 
    void CGhghfDlg::OnButton1() 
    {
    HTREEITEM hItem = GetItemByName(m_tree.GetSafeHwnd(),
                                        NULL, "111");
        if (hItem != NULL)
            m_tree.SelectItem(hItem);}void CGhghfDlg::OnButton2() 
    {
    m_tree.SelectItem(NULL);
    }
      

  2.   

    tree有没有“必须有一个被选中”的属性?