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

要学递归先学递归 2012-08-17 10:16:21
递归调用FindFirstFile和FindNextFile遍历目录,然后传入listview和treeview,然后.....就没有然后了...崩溃了,各种问题,比如,节点设置啊,什么的...大牛们可不可以直接给代码~~简单一点儿就好,有基本功能就好,不需要显示图片等等。跪求,我就这么点儿分了
...全文
289 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...
第1章 制作一个简单的计算器  1.1 基础知识  1.1.1 C++ Builder的集成开发环境   1.1.2 C++ Builder控件的使用方法  1.1.3 有关计算器制作中用到控件的介绍  1.2 编程思路  1.3 操作步骤  1.4 创意与超越  1,5 本章小结 第2章 单窗口文本编辑器  2.1 基础知识  2.1.1 TOpenDialog控件和TsaveDialog控件的属性   2.1.2 控件的方法和事件  2.2 编程思路  2.3 操作步骤 2.4 创意与超越 2.5 本章小结 第3章 MDI窗体应用程序 3.1 基础知识 3.1.1 主窗体和子窗体间的通讯 3.1.2 主菜单和子菜单的融合 3.1.3 Dialog控件系列介绍 3.2 编程思路 3.3 操作步骤 3.4 创意与超越 3.5 本章小结 第4章 剪贴板查看器 4.1 基础知识 4.1.1 控件的属性设置 4.1.2 事件处理 4.2 编程思路 4.3 操作步骤 4.4 创意与超越 4.5 本章小结 第5章 我的资源管理器 5.1 基础知识 5.1.1 TreeView控件 5.1.2 ListView控件 5.2 编程思路 5.3 操作步骤 5.4 创意与超越 5.5 本章小结 第6章 系统文件浏览器 6.1 基础知识 6.1.1 注册表和 INI文件简介 6.1.2 TRegistryIniFile的属性和方法 6.2 编程思路 6.3 操作步骤 6.4 创意与超越 6.5 本章小结 第7章 绘制一个简单的图表 7.1 基础知识 7.2 编程思路 7.3 操作步骤 7.4 创意与超越 7.5 本章小结 第8章 图像编辑器 8.1 基础知识 8.2 编程思路 8.3 操作步骤 8.4 创意与超越 8.5 本章小结 第9章 制作一个简单的播放器 9.1 基础知识 9.1.1 AutoEnable属性 9.1.2 Display属性 9.1.3 Fileplayer属性 9.1.4 FileName属性 9.1.5 DeviceType属性 9.1.6 EnabledButton属性 9.2 编程思路 9.3 操作步骤 9.4 创意与超越 9.5 本章小结 第10章 二维图像处理器 10.1 基础知识 10.1.1 OpenGL的工作顺序 10.1.2 程序的基本结构 10.2 编程思路 10.2.1 OpenGL应用程序库 10.2.2 OpenGL对windows系统的扩展库函数 10.2.3 OpenGL辅助函数库 10.3 操作步骤 10.4 创意与超越 10.5 本章小结 第11章 二人对战五子棋 11.1 基础知识 11.1.1 游戏界面设计 11.1.2 游戏所使用的数据结构和算法 11.1.3 TDrawGrid组件的介绍 11.1.4 TTimer组件的使用 11.2 编程思路 11.2.1 TDrawGrid的应用 11.2.2 计时功能 11.3 操作步骤 11.4 创意与超越 11.4.1 数据结构 11.4.2 程序流程 11.5 本章小结 第12章 学生资料管理程序 12.1 基础知识 12.1.1 数据库基本知识 12.1.2 访问数据库的基本途径 12.2 编程思路 12.3 操作步骤 12.4 创意与超越 12.4.1 中文数据库的字段名 12.4.2 中文输入法的自动切换 12.4.3 对TDBNavigator组件的修改 12.5 本章小节 第13章 高级学生资料管理程序 13.1 基础知识 13.1.1 TQuery组件与TTable的比较 13.1.2 SQL语言简介 13.1.3 TDBChart组件的使用 13.2 编程思路 13.3 操作步骤 13.4 创意与超越 13.5 本章小结 第14章 多媒体数据库的开发 14.1 基础知识 14.1.1 多媒体数据的特点及处理方法 14.1.2 以文件方式保存和播放多媒体数据 14.1.3 以数据方式保存和播放多媒体数据 14.1.4 TOleContainer组件的简单介绍 14.1.5 利用QuickReport组件制作中文数据报表 14.2 编程思路 14.3 操作步骤 14.4 创意与超越 14.5 本章小结 第15章 简单的CGI程序 15.1 基础知识 15.1.1 TWebModule控件 15.1.2 TPageProducer、TQueryTableProducer和TDataSetTableProducer控件 15.1.3 超文本标识语言 15.1.4 CGI的工作原理 15.2 编程思路 15.3 操作步骤 15.4 创意与超越 15.5 本章小结 第16章 网页浏览 16.1 基础知识 16.1.1 什么是WWW 16.1.2 什么是URL 16.1.3 打开URL和连接 16.1.4 在页面之间跳转 16.1.5 获得浏览器的状态信息 16.2 编程思路 16.3 操作步骤 16.4 创意与超越 16.5 本章小结 第17章 电子邮件客户端程序 17.1 基础知识 17.1.1 POP3协议 17.1.2 SMTP协议 17.2 编程思路 17.3 操作步骤 17.4 创意与超越 17.5 本章小结 第18章 网上聊天程序 18.1 基础知识 18.1.1 TServerSocket控件的属性、方法和事件 18.1.2 TClientSocket控件的属性、方法和事件 18.1.3 处理异常 18.2 编程思路 18.3 操作步骤 18.4 创意与超越 18.5 本章小结 第19章 FTP客户端 19.1 基础知识 19.2 编程思路 19.3 操作步骤 19.4 创意与超越 19.5 本章小结 附录A C++语法基础 A.1 C++的基本数据类型及常量、变量 A.1.1 常用的基本数据类型 A.1.2 变量的定义 A.1.3 常量的定义 A.2 操作符、表达式及语句 A.2.1 操作符 A.2.2 表达式 A.2.3 语句 A.3 数组 A.3.1 数组的定义 A.3.2 初始化数组 A.3.3 数组元素的访问 A.3.4 二维数组 A.4 指针 A.4.1 指针的定义 A.4.2 指针运算 A.4.3 指针与数组

604

社区成员

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

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