标题:不显示删除回复显示所有回复显示星级回复显示得分回复 mfc collection Clas ...
只看楼主
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
结帖率:33.33%
 问题点数:0 回复次数:2 
不显示删除回复显示所有回复显示星级回复显示得分回复 mfc collection Classes中怎样实现查询、修改、删除指定元素的功能
侯捷的深入浅出一书中,有一点涉及到删除功能,不过他是全部删除,实现代码:
void CScribbleDoc::DeleteContents()  
{
while (!m_strokeList.IsEmpty())
{
delete m_strokeList.RemoveHead();
}
CDocument::DeleteContents();
}

m_strokeList在文档类中的定义:
 CTypedPtrList<CObList,CStroke*> m_strokeList;

从链表的头部依次往尾部删除,他是通过判断链表是否为空来知道是否达到全部删除的目的。

但是如果我只想删除、修改指定的元素呢,我的想法是在元素中安插一个识别标志,到时候查询的时候,根据这个识别标志找到欲修改、删除的元素,然后删除、修改它。
我写了一些代码,把它放在view的右击函数里面,可总是出错,不知道问题在哪:
POSITION pos1;
CScribbleDoc *pDoc=GetDocument();
    for (pos1=pDoc->m_strokeList.GetHeadPosition(); (pos2 = pos1) != NULL;)
{
………………
}
中间本应有代码,但是我发现即使其中没有代码,运行也出错(编译无错)
具体该怎么实现呢?mfc中又是否有相应的函数?求高人指点!!
搜索更多相关主题的帖子: 元素 星级 全部删除 
2011-01-06 19:30
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
得分:0 
其实最困难的就是通过查询,找到对应链表元素的pos
2011-01-06 19:37
wwwjw
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-12-28
得分:0 
public:
        UINT                   m_nPenWidth;    // one pen width applies to entire stroke
public:
        CArray<CPoint,CPoint>  m_pointArray;   // series of connected points
这是链表元素中的内容,我打算通过
pDoc->m_strokeList.GetAt(pos1)->m_nPenWidth==5这种条件来获取pos,可是却不行!
2011-01-06 19:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-330691-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.280805 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved