關于CTreeCtrl的問題:怎樣將一系列值按條件插入到CTreeCtrl?(UP者為有分)

Frank_Xu 2002-01-17 11:29:41
在數據庫中查詢到一系列值,如下所示:
1,11,111,112,12,121,122,2,21,211,22....
想在CTreeList中排列成如下情況:
1
|__11
| |__111
| |__112
|__12
|__121
|__122
2
|__21
| |__211
|__22
請問用代碼如何實現?
...全文
153 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
pfans 2002-01-25
  • 打赏
  • 举报
回复
For information on how your porgram can cause an assertion failure,see the Visual C++ documentation on asserts
是指断言失败。你debug追踪一下,看是哪一个指针不对。
gexy 2002-01-25
  • 打赏
  • 举报
回复
你调试一下看是不是别的地方有问题,如果你仅仅用HTREEITEM,没有其他数据的话,用CMapStringToPtr这个类比较好,因为htreeitem不是从CObject派生的
Frank_Xu 2002-01-24
  • 打赏
  • 举报
回复
謝謝gexy()的提示,能夠達到我所提問的目的.
pRs->MoveFirst();
HTREEITEM hitem;
CString strNo,strTmp;
CMapStringToOb htridx;

for(j=0;j<i-1;j++)
{ //m_lvdata 為列表視(ListView)控件對象
strNo=(LPSTR)(_bstr_t)(pRs->GetCollect("DeptNo"));
strTmp=strNo.Left(strNo.GetLength()-1);
hitem=NULL;
if(!strTmp.IsEmpty() && (htridx.GetCount()>0))
htridx.Lookup(strTmp,(CObject *&)hitem);
if(hitem==NULL) hitem=tvDept.InsertItem((LPSTR)(_bstr_t)(pRs->GetCollect("DeptName")));
else hitem=tvDept.InsertItem ((LPSTR)(_bstr_t)(pRs->GetCollect("DeptName")),hitem);
htridx.SetAt(strNo,(CObject *&)hitem);
pRs ->MoveNext();
}

我在MDI程序中的一個對話框中初始化.第一次打開成功,關閉對話框後(不退出程序,第二次去打開該對話框時出現如下錯誤,是怎麼回事?
For information on how your porgram can cause an assertion failure,see the Visual C++ documentation on asserts.
(選擇略過後可打開)

gexy 2002-01-24
  • 打赏
  • 举报
回复
需要两点:
1、select * from tablename order by itemname
2、用mfc的map类 CMapStringToOb m_map;装载string 和 HTREEITEM值,用string做key
Frank_Xu 2002-01-24
  • 打赏
  • 举报
回复
如果在VB中,可輕松實現這個功能.
ss1 = ""
rs.MoveFirst
For ir = 1 To rs.RecordCount
If ss1 <> Trim(rs(0)) Then tvw.Nodes.Add , , Trim(rs(0)), Trim(rs(0))
tvw.Nodes.Add Trim(rs(0)), tvwChild, , Trim(rs(0))
ss1 = Trim(rs(0))
rs.MoveNext
Next

VC中怎麼沒有象VB那樣通過第一個參數索引及第二個參數上下級關系來指定節點位置的InsertItem()方法?比如上面的VB代碼怎麼改成VC語句.

請高手幫忙,分數不夠可以再加分.
Frank_Xu 2002-01-24
  • 打赏
  • 举报
回复
u p
wwwsq 2002-01-23
  • 打赏
  • 举报
回复
比较烦,比如:2,211,21先后到来,你的211的位置就不得不改变。。。
最好是先按数据长度排序,相同长度的再按大小排序
Frank_Xu 2002-01-22
  • 打赏
  • 举报
回复
有沒有用VC高手,請指點...
Frank_Xu 2002-01-21
  • 打赏
  • 举报
回复
有沒有用VC做個數據庫的高手,請指點...
Frank_Xu 2002-01-18
  • 打赏
  • 举报
回复
u p
kingzai 2002-01-17
  • 打赏
  • 举报
回复
m_htiParent = tree.InsertItem ("命令",0,0);
HTREEITEM htiChild; // child item
HTREEITEM htigrandson;
htiChild=tree.InsertItem("内部命令",0,0,m_htiParent,TVI_LAST);
htigrandson=tree.InsertItem("扩展命令",0,0,m_htiParent,TVI_LAST);
类似这种就好了
zhang1000 2002-01-17
  • 打赏
  • 举报
回复
Insert节点时有父节点和前一节点参数,
具体可参考MSDN,里边很详细!
DoItFreely 2002-01-17
  • 打赏
  • 举报
回复
搜索Item的Text
kingzai 2002-01-17
  • 打赏
  • 举报
回复
作一个存取句柄的类
Frank_Xu 2002-01-17
  • 打赏
  • 举报
回复
InsertItem的普通用法我也知道
但插入時我怎樣才能動態知道父節點的hitem?

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧