用CTreeCtrl做资源管理碰到的问题
毒行江湖 2011-01-16 04:26:31 想做一个地图编辑器。
我现在做了一个对话框,上面放了三个属性页。其中有一个属性页是放的CTreeCtrl控件,显示的是资源目录树,且记为PropertyPage1;另外一个属性页(且记为PropertyPage2)上面有个Button,是打开资源目录用的,就是说触发了这个按钮后出现一个选目录的对话框,然后选择文件夹之后返回一个路径,我想达到的效果是在这个选择目录的操作完成之后,当我查看PropertyPage1的时候能看到CTreectrl控件中已经显示了这个目录下的所有文件。
现在的进度:
1、给定初始路径,在初始对话框的时候遍历路径下的文件并使之显示在CTreeCtrl上,没问题。
2、选择目录对话框的功能,用SHBrowseForFolder做好了,并得到了正确的路径,没问题。
问题是:
1、在遍历新目录之前需要导入文件夹路径,而在上面得到的是形如“E:\a\b\c”的格式(类型是CString),在调用CFileFind::FindFile(LPCTSTR pstrName)的时候是不是应该改成形如“E:\\a\\b\\c”的格式?如果需要的话,怎么改,我自己写个for循环一个一个字符地检查然后移动能替换(我只能想到这样的笨方法,囧),但是我想知道能不能使用CString所提供的函数来组合出一个高效的方法来实现这样的功能。
2、在获得新目录之后,如果我要只遍历新目录下的文件,是不是要DeleteAllItem,然后直接就可以InsertItem了吗?需不需要其他什么操作,比如UpdateDialog什么的? 如果我想把新目录与旧目录(比如是D:\e\f)都显示,还要把新目录的主目录(即c)放在与旧目录的根目录(即f)同级的位置,其下的子文件和子文件夹也都相应同级,而且要排按顺序排列,应该怎么办?
请各位大侠帮忙看看,或者,有没有这方面的例子,给我个。不胜感激。