C++ Builder 利用listview和treeview做windows资源管理器

要学递归先学递归 2012-08-17 10:16:21
递归调用FindFirstFile和FindNextFile遍历目录,然后传入listview和treeview,然后.....就没有然后了...崩溃了,各种问题,比如,节点设置啊,什么的...大牛们可不可以直接给代码~~简单一点儿就好,有基本功能就好,不需要显示图片等等。跪求,我就这么点儿分了
...全文
275 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
罢了罢了,感谢各位大牛们的关注,我还是自己努力看看基础吧
我不懂电脑 2012-08-17
  • 打赏
  • 举报
回复
BCB有个shell控件,需要自己在example目录找到装上,可以用。
  • 打赏
  • 举报
回复
这个是delphi的,没学过,虽然跟CBuilder很像,可是如果参考这个代码,估计会出很多问题吧...
[Quote=引用 9 楼 的回复:]

还有这个
http://www.websnap123.com/show-TVRReU56QXg=.html
[/Quote]
缘中人 2012-08-17
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
什么叫不是向上退的目录,还有就是怎么加treeview的节点,怎么用listview= =!so many question...[Quote=引用 6 楼 的回复:]

if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)判断是目录而不是文件
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )//不是向上退的目录


else if( strcmp(fd.cFileName, ".") &……
[/Quote]
缘中人 2012-08-17
  • 打赏
  • 举报
回复
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)判断是目录而不是文件
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )//不是向上退的目录


else if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
  • 打赏
  • 举报
回复
遍历的函数代码是这个:
void __fastcall TForm1::FindFileInDir(char* rootDir, char* strRet, int n)
{
if(n == 0)
{
i = 0;
Node[0] = NULL;
}
char fname[MAC_FILENAMELENOPATH];
ZeroMemory(fname, MAC_FILENAMELENOPATH);

WIN32_FIND_DATA fd;
ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));

HANDLE hSearch;
char filePathName[256];
char tmpPath[256];
ZeroMemory(filePathName, 256);
ZeroMemory(tmpPath, 256);

strcpy(filePathName, rootDir);
BOOL bSearchFinished = FALSE;
if( filePathName[strlen(filePathName) -1] != '\\' )
{
strcat(filePathName, "\\");
}
strcat(filePathName, "*.*");
hSearch = FindFirstFile(filePathName, &fd);
ShowMessage(filePathName);

//Is directory
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )

{
strcpy(tmpPath, rootDir);
strcat(tmpPath, fd.cFileName);
Node[i+1] = ptv -> Items -> AddChild(Node[i], fd.cFileName);
i++;
n++;
FindFileInDir(tmpPath, strRet, n);

}

else if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
sprintf(fname, "%s\n", fd.cFileName);
strcat(strRet + strlen(strRet) , fname);
}

while( !bSearchFinished )
{
if( FindNextFile(hSearch, &fd) )
{
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
strcpy(tmpPath, rootDir);
strcat(tmpPath, "\\");
strcat(tmpPath, fd.cFileName);
Node[i+1] = ptv -> Items -> Add(Node[i], fd.cFileName);
i++;
n++;
FindFileInDir(tmpPath, strRet, n);
}
else if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
sprintf(fname, "%s\n", fd.cFileName);
strcat(strRet + strlen(strRet) , fname);
}
}
else
{
if( GetLastError() == ERROR_NO_MORE_FILES ) //Normal Finished
{
bSearchFinished = TRUE;
}
else
bSearchFinished = TRUE; //Terminate Search
}
}
FindClose(hSearch);
}[Quote=引用 2 楼 的回复:]

现成的没有,你的问题代码贴出来看看吧
[/Quote]
fxworld 2012-08-17
  • 打赏
  • 举报
回复
参考bcb6的Shell Control组件,在bcb6的Example中找一下。
  • 打赏
  • 举报
回复
Oh, shit! 怎么没人来...好吧,我说具体点儿:
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
这句代码和
else if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
这句代码分别表示什么意思。还有如何向listview中添加遍历得到的文件夹和文件以及如何让它和treeview关联,比如点击treeview中的一个文件夹,listview就能显示该文件夹中的东东~大牛们,help...
缘中人 2012-08-17
  • 打赏
  • 举报
回复
现成的没有,你的问题代码贴出来看看吧
  • 打赏
  • 举报
回复
不要无人问津啊~我已经纠结一个星期了,help...

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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