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

📄 filecutter.h

📁 VC源码:文件分割器 VC源码:文件分割器
💻 H
字号:
////////////////////////////////////////////////////
// FileCutter.h文件


#ifndef __FILECUTTER_H_
#define __FILECUTTER_H_

#include <afxwin.h>

// CFileCutter类发给主窗口的通知消息
#define WM_CUTTERSTART WM_USER + 100	// wParam == nTatolCount
#define WM_CUTTERSTOP WM_USER + 101	// wParam == nExitCode, lParam == nCompletedCount
#define WM_CUTTERSTATUS WM_USER + 102	//			lParam == nCompletedCount

class CFileCutter
{
public:
// 工作退出代码
	enum ExitCode{ 
		exitSuccess,	// 成功完成任务
		exitUserForce,  // 用户终止
		exitSourceErr,  // 源文件出错
		exitDestErr	// 目标文件出错
		};

// 构造函数
	CFileCutter(HWND hWndNotify);

// 属性
	BOOL IsRunning() const { return m_bRunning; }

// 操作
	BOOL StartSplit(LPCTSTR lpszDestDir, LPCTSTR lpszSourceFile, UINT uFileSize);
	BOOL StartMerge(LPCTSTR lpszDestFile, LPCTSTR lpszSourceDir);

	BOOL SuspendCutter();
	BOOL ResumeCutter();
	void StopCutter();
	
// 具体实现
public:
	~CFileCutter();

protected:
	// 重置参数信息和状态标志
	void Reset();
	// 进行真正的分割操作
	void DoSplit();
	// 进行真正的合并操作
	void DoMerge();
	// 工作线程
	UINT friend _CutterEntry(LPVOID lpParam);

	// 参数信息
	CString m_strSource;
	CString m_strDest;
	UINT m_uFileSize;
	BOOL m_bSplit;
	// 状态标志
	BOOL m_bContinue;	//  是否继续工作
	BOOL m_bRunning;	//  是否处于工作状态

	// 同步以上两组数据
	CRITICAL_SECTION m_cs;	// Data gard

private:
	// 对象的生命周期全局有效的数据
	HWND m_hWndNotify;	// 接受消息通知事件的窗口句柄
	HANDLE m_hWorkEvent;	// 通知开始工作的事件对象句柄
	CWinThread* m_pThread;	// 工作线程
	BOOL m_bSuspend;	// 暂停标志
	BOOL m_bExitThread;	// 退出标志
};

#endif // __FILECUTTER_H_

⌨️ 快捷键说明

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