filewatcher.h

来自「游戏编程精粹6第1章 通用编程,对入门的游戏开发者很有帮助.」· C头文件 代码 · 共 42 行

H
42
字号
#pragma once

#include <string>
#include <vector>

#define _WIN32_WINNT 0x0501
#include <windows.h>

#include <time.h>

class FileWatcher
{
public:
	FileWatcher(const std::string& directoryToWatch);
	~FileWatcher();

	bool Update();

	typedef std::vector< std::string > StringVec;
	typedef void (*ChangedFileSetCallback)(const StringVec &);
	void InstallChangedFileSetCallback(ChangedFileSetCallback cb) { m_cb = cb; }

private:
	bool Listen();
	void UpdateReportTiming();
	void ReportChangedFile(const std::string& filename);

	HANDLE m_directoryHandle;
	HANDLE m_notifyEvent;
	OVERLAPPED m_overlappedIo;
	char *m_notifyResults;

	StringVec m_pendingChangedFiles;
	__time64_t m_timeOfFirstPendingChange;
	bool m_timing;

	ChangedFileSetCallback m_cb;

private:
	FileWatcher(const FileWatcher&);
	FileWatcher& operator =(const FileWatcher&);
};

⌨️ 快捷键说明

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