首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

跪求 treeview 展示本地磁盘文件内容代码!

2012-12-29 
跪求 treeview 显示本地磁盘文件内容代码!!!!跪求 treeview 显示本地磁盘文件内容代码!!!![解决办法]Form1

跪求 treeview 显示本地磁盘文件内容代码!!!!
跪求 treeview 显示本地磁盘文件内容代码!!!!
[解决办法]
Form1上放置一个TreeView控件

Form1的h文件中的public:
添加:void __fastcall BrowseDirectory(AnsiString Dir, TTreeNode* Node);

cpp文件添加:

TTreeNode *selNode;
AnsiString nodePath;
AnsiString curPath = "";

int GetDriveCount(void)
{
int DiskCount = 0;
DWORD DiskInfo = GetLogicalDrives();

//利用GetLogicalDrives()函数可以获取系统中逻辑驱动器的数量,函数返回的是一个32位无符号整型数据。
while(DiskInfo)//通过循环操作查看每一位数据是否为1,如果为1则磁盘为真,如果为0则磁盘不存在。
{
if(DiskInfo&1)//通过位运算的逻辑与操作,判断是否为1
{
++DiskCount;
}
DiskInfo = DiskInfo >> 1;//通过位运算的右移操作保证每循环一次所检查的位置向右移动一位。
//DiskInfo = DiskInfo/2;
}
return DiskCount;
}
//int nodeCount = 0;
void GetDriveInfo(void)
{
Form1->TreeView1->Items->Clear();
int DSLength = GetLogicalDriveStrings(0,NULL);
//通过GetLogicalDriveStrings()函数获取所有驱动器字符串信息长度。
char* DStr = new char[DSLength];//用获取的长度在堆区创建一个c风格的字符串数组

GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);
    //通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。
int driType;
TTreeNode* Node;
for(int i=0; i<DSLength/4; ++i)
//为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:\NULLB:\NULLC:\NULL,这样的信息,所以DSLength/4可以获得具体大循环范围
{
driType = GetDriveType(DStr+i*4);
char dirNameCh[4] = {DStr[i*4], ':', '\\'};
AnsiString driName = dirNameCh;
//GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录
switch(driType)
{
 case DRIVE_FIXED: Form1->TreeView1->Items->Add(NULL, driName);
   Node = Form1->TreeView1->Items->Item[Form1->TreeView1->Items->Count-1];
   //nodeCount++;
   Form1->BrowseDirectory(Node->Text,Node);break;
   }
}
}

void __fastcall TForm1::BrowseDirectory(AnsiString Dir, TTreeNode* Node)
{
TSearchRec sr;
TTreeNode* SubNode=Node;
if(FindFirst(Dir+"*.*",faDirectory,sr)==0)
while(1)
{
if(sr.Attr==faDirectory&&sr.Name!="."&&sr.Name!="..")
{
SubNode=Form1->TreeView1->Items->AddChild(Node,sr.Name);
BrowseDirectory(Dir+sr.Name+"\",SubNode);
}
if(FindNext(sr)!=0) break;
}
FindClose(sr);
return;
}

Form的Create事件中添加:

GetDriveInfo();

热点排行