不想删除ClistCtrl的自定义数据,该怎么办?

azk2000 2006-01-13 12:15:10
我用LV_ITEM Item的方式insert到一个list,其中new了一个自己的在doc中定义的数据结构,这个结构由于在其他地方还要用到,所以当clistctrl有更新时不能删除,但要更新一个ClistCtrl必须先调用clistctrl::deleteallitem,在ClistCtrl::OnDeleteitem中就要删除条目才能将新增加的item给加进去,现在我只想更新条目,由想留住自己的在doc中定义的数据结构供下次调用,请问ClistCtrl有没有什么函数只清空显示区域,而不删除我的数据结构?

难道我只得定义两个结构吗?一个用于list显示,一个用于list历史数据得保存?
...全文
177 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
azk2000 2006-01-15
  • 打赏
  • 举报
回复
I will try it, Thank your verv much

Best Regards
蒋晟 2006-01-15
  • 打赏
  • 举报
回复
对于你需要的排序,你可以用CRT的qsort函数。使用IShellFolder::EnumObjects的原因是性能。用Win32的FindAPI的话,在函数返回之前会搜索完整个目录,但是用虚列表的话,可以只获取正在显示的文件的信息(当然,在我的代码中还缓存了文件列表的开头和末尾,这是用户经常查看的位置)。
蒋晟 2006-01-15
  • 打赏
  • 举报
回复
用IShellFolder2::GetDetailsEx看看
azk2000 2006-01-14
  • 打赏
  • 举报
回复
to jiangsheng(蒋晟.Net[MVP]) 可以再问您一个问题吗?刚开始我也是用shell来做的,可是后来我发现它在得到文件wIN32_DATA信息的file_size上有问题,您可以看看吗?
我用 SHGetDataFromIDList 得到 File_Size_info ,我发现它不能给我正确的信息,当文件大于4G

如下代码
1.add wfd,uhFileSize
WIN32_FIND_DATA wfd;
ULONGLONG uhFileSize = 0

2.add SHGetDataFromIDList 检索每一个文件的WIN32_FInd_DATA
while (NOERROR == pEnumIDList->Next(1, pidl.GetPointer(), NULL))
{
...
memset(&wfd, 0, sizeof(wfd));
SHGetDataFromIDList(pParentFolder, pidlRel, SHGDFIL_FINDDATA, &wfd, sizeof(wfd));
;
...
uhFileSize = (((ULONGLONG) wfd.nFileSizeHigh) << 32) + wfd.nFileSizeLow;

if (uhFileSize > (1024*1024*1024))
strFileSize.Format("%1.2f GB", (LONGLONG) uhFileSize / (1024.0*1024*1024));
TRACE("%Lu ", (LONGLONG) uhFileSize );
...
}

如果有一个文件的实际尺寸 = 4,499,005,440 Bytes =4.19G ,如果我用 FindFirstFile ,文件尺寸显示的是正确的 ,但是如果我用SHGetDataFromIDList ,
得到文件尺寸 =4,294,967,295 and 4.00G ,为什么会这样呢?MSDN上说SHGetDataFromIDList只填充win32_DATA_FILD的部分内容,难道它还不支持大于4G的文件?不可能吧
azk2000 2006-01-14
  • 打赏
  • 举报
回复
to jiangsheng(蒋晟.Net[MVP])

我已经加入了虚列表的支持,我做的和您的那个使用虚列表和自画实现文件夹的缩略图显示 程序比较相似,我测试比较了一下用虚列表和普通列表来显示文件的速度 ,比如c:\windows\system32 这个目录含的文件较多,我发现普通list和虚列表的速度和各方面表现都差不多,我觉得我的瓶颈是在findfirst和插入vector, 但是虚列表的各方面编码都比较复杂,图标,checkbox全部要自己draw,既然这样不知道用虚列表有什么好处啊?
蒋晟 2006-01-14
  • 打赏
  • 举报
回复
虚列表没有自己的数据,你需要自己把数据排好之后通知虚列表更新显示。
azk2000 2006-01-13
  • 打赏
  • 举报
回复
只能用虚列表吗?

有谁说说虚列表下如何排序吗?
蒋晟 2006-01-13
  • 打赏
  • 举报
回复
用虚列表
参见http://blog.csdn.net/jiangsheng/archive/2003/11/20/3796.aspx
eleek 2006-01-13
  • 打赏
  • 举报
回复
问题说得有点不是很清楚,你为啥一定要deleteallitem才可以更新?难道不能直接调用insertitem插入新增的item嘛?或者调用deleteitem删除不要的item嘛?
另外在doc中定义是啥意思?doc是啥?

16,551

社区成员

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

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

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