我找不道判断树是否展开的函数。
请写详细点
还有就是我有一个CTree类,想让CTreeView里的Tree换成它怎么办?

解决方案 »

  1.   

    在OnItemExpand里换图标。我也不知道怎么判断换图标,不过我想你要在两个图标间换吧,可以换之前取图标值,如果是其中一个则换成另一个。功能上都一样。
      

  2.   

    不点开树你怎么看的见图标呢?是不是说根树的图标换一个??
    CTreeCtrl myTree;
    BOOL TreeOpen = myTree.Expand( HTREEITEM hItem, TVE_EXPAND);
    查查msdn,可能是这样判断树是否打开。
    至于换图象,看一下下面这些代码。CImageList *pimagelist = new CImageList;
    pimagelist->Create(MAKEINTRESOURCE(IDB_BITMAP_ROOT), 48, 1, RGB(192, 192, 192));CBitmap bm;
    bm.LoadBitmap(IDB_BITMAP1);
    pimagelist->Add(&bm, RGB(192, 192, 192));
    bm.DeleteObject();bm.LoadBitmap(IDB_BITMAP2);
    pimagelist->Add(&bm, RGB(192, 192, 192));
    bm.DeleteObject();bm.LoadBitmap(IDB_BITMAP3);
    pimagelist->Add(&bm, RGB(192, 192, 192));
    bm.DeleteObject();bm.LoadBitmap(IDB_BITMAP4);
    pimagelist->Add(&bm, RGB(192, 192, 192));
    bm.DeleteObject();

    bm.LoadBitmap(IDB_BITMAP5);
    pimagelist->Add(&bm, RGB(192, 192, 192));
    bm.DeleteObject();bm.LoadBitmap(IDB_BITMAP6);
    pimagelist->Add(&bm, RGB(192, 192, 192));
    bm.DeleteObject();m_myTree.SetImageList(pimagelist, TVSIL_NORMAL);

    // 结点基本信息(初始化各节点)
    TV_INSERTSTRUCT tvinsert;
    tvinsert.hParent = NULL;
    tvinsert.hInsertAfter = TVI_LAST; //TVI_ROOT
    tvinsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE| TVIF_TEXT;
    tvinsert.item.hItem = NULL;
    tvinsert.item.state = 0;
    tvinsert.item.stateMask = 0;
    tvinsert.item.cchTextMax = 6;
    tvinsert.item.iImage = 0;
    tvinsert.item.iSelectedImage = 0; //设定当前焦点项的图象
    tvinsert.item.cChildren = 0;
    tvinsert.item.lParam = 0;
    /////////////////插入各节点//////////////////////////////////////
    CString str[6];
    str[0] = _T("机箱");
    str[1] = _T("USB硬盘");
    str[2] = _T("显示器");
    str[3] = _T("摄像头");
    str[4] = _T("投影仪");
    str[5] = _T("鼠标");for( int i=0; i<6; i++ )
    {
    m_myTree.InsertItem(&tvinsert); tvinsert.item.pszText = str[i].GetBuffer(str[i].GetLength());
    tvinsert.item.iImage = i+1; //设定对应项的图象

    tvinsert.hParent = NULL;

    }
    IDB_BITMAP_ROOT、IDB_BITMAP1等是图象的id。要专门换的话就用
    BOOL SetItemImage( HTREEITEM hItem, int nImage, int nSelectedImage );
      

  3.   

    CTreeView本来都有这个功能,在初始时设定的。