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

📄 rapidfinder.h

📁 一个文件查找工具的VC++源码 一个文件查找工具的VC++源码
💻 H
字号:
// RapidFinder.h: interface for the CRapidFinder class.
/*===================================================================

作者:Kelvin U.V
时间:2002-9-15
功能:多线程文件查找
版本:1.0

/===================================================================*/
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_RAPIDFINDER_H__CABCFE4E_C992_11D6_A1A8_00902758778B__INCLUDED_)
#define AFX_RAPIDFINDER_H__CABCFE4E_C992_11D6_A1A8_00902758778B__INCLUDED_

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

#include "stdafx.h"
#define OP_FILENAME    0x01
#define OP_FILETEXT    0x02
 
#define WM_THREADEXIT    WM_USER+100 
#define WM_THREADCOUNT   WM_USER+101 
#define	WM_FINDERITEM    WM_USER+102 
#define WM_THREADPAUSE   WM_USER+103 
#define WM_FINDERFOLDER  WM_USER+104
class CRapidFinder  
{
//选项结构定义(未完成)-----------------------------------------------------------
typedef struct tagFinderOption
{
	BYTE OptionFlag;
	//Bit1: bSubFinder;  搜索子目录 
	//--------文件名--------------
	//Bit2: bCaseMatch;  匹配大小写
	//Bit3: bMatchAll;   全字匹配
	//-------------------------------
	//Bit4: bSeekToTime; 按时间搜索
	//Bit5: bSeekToSize; 按大小搜索
}  FINDEROPTION;

//函数区————————————————————————————————————
public:
	CRapidFinder();
	CRapidFinder(HWND MainHwnd,CString MatchName="*.*",CString MatchDir="");
	virtual ~CRapidFinder();
	
	//初始化设置
	void FinderSet(HWND MainHwnd,CString MatchName="*.*",CString MatchDir="");
	void ThreadSet(LONG MaxThreadCount=5,int priority=0);
	void FindWithText(LPCTSTR lpText,int count);

	//搜索选项
	void FinderOption(FINDEROPTION FinderOption);
    
    //程序操作
	BOOL StartFinder();        //开始查找
	void PauseFinder();        //暂停查找
	void ResumeFinder();       //继续查找
	void StopFinder();         //停止查找
	void FinderReset();        //查找重置
    
	//获取结果
	LONG GetThreadCount(){return m_MaxThreadCount;};     //取得当前线程数
	int  GetThreadPrioriy(){return m_Priority;};
	
	LPCTSTR GetErrMsg()const;
	int GetErrNo()const{return m_ErrNo;};
//-------------------------------------------------------------------
#ifdef _DEBUG	
    CString OutputPath();
#endif
//---------------------------------------------------------------------
private:
	void CreatePathList();      //规格化输入路径
	
	inline CString& Trim(CString &string){string.TrimRight();string.TrimLeft();return string;};
    inline void SetErrNo(int ErrNo){m_ErrNo=ErrNo;};
    
	//创建一个线程
	static HANDLE StartThread(LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParam);
    //主线程与查找线程函数
    static DWORD WINAPI ThreadProc(LPVOID lpParam);
    static DWORD WINAPI MainThreadProc(LPVOID lpParam);

    BOOL __fastcall MatchProc(CString &findpath);
	BOOL __fastcall FindTextFromFile(CString &findpath);
	int*  CalNextPos();

//数据区———————————————————————————————————
private:
	HWND m_MainhWnd;       //主窗口句柄
	CStringList m_DirList; //临时目录表
	CString m_strFileName; //查找文件名
	CString m_strFileDir;  //查找目录
	LONG   m_MaxThreadCount; //最大线程数
	BYTE * m_lpText;       //包含文字
	int  * m_NextVal;        //模式匹配之用
	int    m_TextSize;
	BYTE   m_Option;         //搜索选项
	
	LONG m_ActiveCount;    //当前活动线程数
	int m_Priority;        //线程优先权
	HANDLE *m_hThrds;
	int m_ErrNo;		   //错误代码

    HANDLE m_hExitEvent;
	enum EXIT_CODE{EXIT,PAUSE,STOP,ERR};
	EXIT_CODE m_ExitCode;

	//临界区
	CRITICAL_SECTION m_gCriticalSection;

	//优先权常数
	const static int HIGHEST_PRIORITY;
	const static int ABOVE_NORMAL;
	const static int NORMAL_PRIORITY;
	const static int BELOW_NORMAL;
	const static int LOWEST_PRIORITY;

	//错误信息
	const static LPCTSTR ErrMsg[];
};

#endif // !defined(AFX_RAPIDFINDER_H__CABCFE4E_C992_11D6_A1A8_00902758778B__INCLUDED_)

⌨️ 快捷键说明

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