⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 browsedir.h

📁 gprs
💻 H
字号:

#ifndef _BROWSEDIR_H_
#define _BROWSEDIR_H_

#if !defined(AFX_22DLG_H__21067064_2ED6_45E7_8D51_415988D54AE1__INCLUDED_)
#define AFX_22DLG_H__21067064_2ED6_45E7_8D51_415988D54AE1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//#include "GprsServerDlg.h"

class CBrowseDir
{
protected:
//存放初始目录的绝对路径,以'\'结尾
	char m_szInitDir[_MAX_PATH];

public:
//缺省构造器
	CBrowseDir();

//设置初始目录为dir,如果返回false,表示目录不可用
	bool SetInitDir(const char *dir);

//开始遍历初始目录及其子目录下由filespec指定类型的文件
//filespec可以使用通配符 * ?,不能包含路径。
//如果返回false,表示遍历过程被用户中止
	bool BeginBrowse(const char *filespec);

protected:
//遍历目录dir下由filespec指定的文件
//对于子目录,采用迭代的方法
//如果返回false,表示中止遍历文件
	bool BrowseDir(const char *dir,const char *filespec);

//函数BrowseDir每找到一个文件,就调用ProcessFile
//并把文件名作为参数传递过去
//如果返回false,表示中止遍历文件
//用户可以覆写该函数,加入自己的处理代码
	virtual bool ProcessFile(const char *filename);

//函数BrowseDir每进入一个目录,就调用ProcessDir
//并把正在处理的目录名及上一级目录名作为参数传递过去
//如果正在处理的是初始目录,则parentdir=NULL
//用户可以覆写该函数,加入自己的处理代码
//比如用户可以在这里统计子目录的个数
	virtual void ProcessDir(const char *currentdir,const char *parentdir);

}; 


//从CBrowseDir派生出的子类,用来统计目录中的文件及子目录个数
class CStatDir:public CBrowseDir
{

protected:
	int m_nFileCount;   //保存文件个数
	int m_nSubdirCount; //保存子目录个数
	unsigned char m_nRunMode;  //运行哪个函数
    LPVOID pDlg;
public:
//缺省构造器
	CStatDir(LPVOID pDlg1)
	{
//初始化数据成员m_nFileCount和m_nSubdirCount
		m_nFileCount=m_nSubdirCount=0;
		pDlg = pDlg1;
	}

	void ResetFileCount(void)
	{
		m_nFileCount = 0;
	}
//返回文件个数
	int GetFileCount()
	{
		return m_nFileCount;
	}
//得到工作模式
 	void SetWorkMode(unsigned char mode)
	{
		m_nRunMode = mode;
	}
// 发送文件程序	
	UINT  _SendFileThread(LPVOID lparam);

//返回子目录个数
	int GetSubdirCount()
	{
//因为进入初始目录时,也会调用函数ProcessDir,
//所以减1后才是真正的子目录个数。
		return m_nSubdirCount-1;
	}

protected:
//覆写虚函数ProcessFile,每调用一次,文件个数加1
	virtual bool ProcessFile(const char *filename);


//覆写虚函数ProcessDir,每调用一次,子目录个数加1
	virtual void ProcessDir(const char *currentdir,const char *parentdir)
	{
		m_nSubdirCount++;
		CBrowseDir::ProcessDir(currentdir,parentdir);
	}
};

#endif 

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -