我想用Tree控件建立一个虚拟文件系统显示服务器的文件系统信息,包括显示,查询,等功能.虚拟文件系统包括子目录和文件
但由于不是本地文件系统,所以不知道要不要新建立类来描述这个虚拟文件系统? 貌似不用新建类的话,很难确定一个节点是文件还是目录,查询也不方便.各位有没有什么好的建议或者成功的办法? 谢谢.
但由于不是本地文件系统,所以不知道要不要新建立类来描述这个虚拟文件系统? 貌似不用新建类的话,很难确定一个节点是文件还是目录,查询也不方便.各位有没有什么好的建议或者成功的办法? 谢谢.
解决方案 »
- 急!在对话框中调用VIEW的打印预览,能显示,其上的按钮无响应
- 按钮ID是IDOK,想在按下时用EndDialog()传递参数,但好像失败了。。。。
- csdn的下载频道坏了?
- GetQueuedCompletionStatus如何处理自定义类型:CompletionKey?
- 向高手求救:可以使用libmySQL.dll来建立一个MYSQL数据库吗?(
- 在NTFS中,如何让被系统删除的文件所在的区域不被后来的文件覆盖?
- 如何在一个程序中打开另一个程序(比如记事本)?
- 请问以下代码在VC中为何编译不过?? 200分!!
- 智力
- 怎样动态显示和隐藏命令按钮控件?急急急
- 托盘程序。。。
- 全局鼠标键盘钩子。。。
PS:
如果只是想确定一个节点是文件还是目录,可以设置节点的附加数据(SetItemData)是否含有FILE_ATTRIBUTE_DIRECTORY 属性。
这个BOOL SetItemData( HTREEITEM hItem, DWORD dwData );
如果设置含有的话:
SetItemData(hRoot,FILE_ATTRIBUTE_DIRECTORY); //文件
但是如果想消除这个标志呢?
typedef struct
{
CString strDownloadURL;
DWORD dwFileAttributes;
int nSubFolders; //子目录个数
int nFiles; //文件个数
} MYFILE_DATA, * LPMYFILE_DATA;添加节点时使用 new 为结构分配内存,并将返回的指针作为节点的附加数据。
删除节点前要先使用 delete 删除所分配的内存。
参数都是已经固定的.
所以下面这段我还不知道怎么用,能不能举个例子说明一下? 呵呵 如果要为节点设置更多的数据,可以定义一个结构或类来保存这些数据,如:
typedef struct
{
CString strDownloadURL;
DWORD dwFileAttributes;
int nSubFolders; //子目录个数
int nFiles; //文件个数
} MYFILE_DATA, * LPMYFILE_DATA;添加节点时使用 new 为结构分配内存,并将返回的指针作为节点的附加数据。
删除节点前要先使用 delete 删除所分配的内存。
//数据。
pData->strDownloadURL = ...
pData->dwFileAttributes = ...
pData->nSubFolders = ...
pData->nFiles = ...//使用 InsertItem 添加节点,然后设置节点的附加数据:
SetItemData(hItem, (DWORD)pData);
(也可以直接在 InsertItem 时,设置参数 LPARAM lParam 的值为 pData)使用数据:
LPMYFILE_DATA pData = (LPMYFILE_DATA)GetItemData(hItem);
另外,文件夹和文件应该使用不同的Image,根据Image索引也可以区分。
pData = (LPMYFILE_DATA*)GetItemData(hItem);
if(pData!=NULL)
{
delete pData;
pData = NULL;
}
没有添加附加数据的情况下,有的时候pData的值=0x0000000a,导致删除不了,不知道是什么原因?
这个值不设为0就会有这个问题,估计设置为0也不会有影响吧?