unit1.cpp
来自「本书《C++Builder与WindowsAPI经典范例》附含配套光盘包括132」· C++ 代码 · 共 85 行
CPP
85 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
nFile = nDir = 0;
AnsiString sd;
//若user忘记,则自动在后面加入"\",显示为目录
if( ComboBox1->Text[ComboBox1->Text.Length()]!='\\')
sd = ComboBox1->Text + "\\";
else
sd = ComboBox1->Text ;
ScanDirectory( sd.c_str(), NULL);
StaticText1->Caption =
"共用" + AnsiString(nDir) + " 目录及 " + AnsiString(nFile) + " 文件";
StaticText1->Color = (TColor)0x0080FF80;
}
//---------------------------------------------------------------------------
void TForm1::ScanDirectory(char Directory[], TTreeNode *Node)
{
char CopyDir[1000];
strcpy(CopyDir, Directory);
WIN32_FIND_DATA Data;
char Name[1000];
lstrcpy(Name, CopyDir);
lstrcat(Name, "*.*");
HANDLE hFile = FindFirstFile(Name, &Data);
bool Res = true;
bool FirstFile = true;
if(hFile != INVALID_HANDLE_VALUE)
{
while(Res)
{
if(lstrcmp(Data.cFileName, "..") && lstrcmp(Data.cFileName,"."))
{
if(Data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
nDir++;
char N[1000];
lstrcpy(N, CopyDir); lstrcat(N, Data.cFileName);
lstrcat(N, "\\");
if(FirstFile)
{
Node = TreeView1->Items->AddChild(Node, Data.cFileName);
FirstFile = false;
}
else
Node = TreeView1->Items->Add(Node,Data.cFileName);
ScanDirectory(N, Node);
}
else
{
nFile++;
if(FirstFile)
{
Node = TreeView1->Items->AddChild(Node,Data.cFileName);
FirstFile = false;
}
else
TreeView1->Items->Add(Node, Data.cFileName);
}
}
StaticText1->Caption = "工作中!";
StaticText1->Color = (TColor)RGB(255,128,255);
Res = FindNextFile(hFile, &Data);
//容许用户中断此循环
Application->ProcessMessages();
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?