| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | #pragma once
 | 
					
						
							|  |  |  |  | #include "e2dutil.h"
 | 
					
						
							|  |  |  |  | #include "e2dimpl.h"
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace e2d | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	class Random | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		// ȡ<>÷<EFBFBD>Χ<EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		template<typename T> | 
					
						
							|  |  |  |  | 		static inline T Range(T min, T max) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			return e2d::Random::RandomInt(min, max); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// ȡ<>÷<EFBFBD>Χ<EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		static inline float Range(float min, float max) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			return e2d::Random::RandomReal(min, max); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// ȡ<>÷<EFBFBD>Χ<EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		static inline double Range(double min, double max) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			return e2d::Random::RandomReal(min, max); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	private: | 
					
						
							|  |  |  |  | 		template<typename T> | 
					
						
							|  |  |  |  | 		static T RandomInt(T min, T max) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			std::uniform_int_distribution<T> dist(min, max); | 
					
						
							|  |  |  |  | 			return dist(Random::GetEngine()); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		template<typename T> | 
					
						
							|  |  |  |  | 		static T RandomReal(T min, T max) | 
					
						
							|  |  |  |  | 		{ | 
					
						
							|  |  |  |  | 			std::uniform_real_distribution<T> dist(min, max); | 
					
						
							|  |  |  |  | 			return dist(Random::GetEngine()); | 
					
						
							|  |  |  |  | 		} | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 		// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		static std::default_random_engine &GetEngine(); | 
					
						
							|  |  |  |  | 	}; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 	// <20><><EFBFBD><EFBFBD>
 | 
					
						
							| 
									
										
										
										
											2018-09-10 20:55:20 +08:00
										 |  |  |  | 	class Music | 
					
						
							|  |  |  |  | 		: public Ref | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 	{ | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		Music(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		explicit Music( | 
					
						
							|  |  |  |  | 			const e2d::String& file_path	/* <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		explicit Music( | 
					
						
							|  |  |  |  | 			const Resource& res		/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		virtual ~Music(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool Open( | 
					
						
							|  |  |  |  | 			const e2d::String& file_path	/* <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
 | 
					
						
							|  |  |  |  | 		bool Open( | 
					
						
							|  |  |  |  | 			const Resource& res | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool Play( | 
					
						
							|  |  |  |  | 			int loopCount = 0 | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ͣ
 | 
					
						
							|  |  |  |  | 		void Pause(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		void Resume(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// ֹͣ
 | 
					
						
							|  |  |  |  | 		void Stop(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20>رղ<D8B1><D5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
 | 
					
						
							|  |  |  |  | 		void Close(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool IsPlaying() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool SetVolume( | 
					
						
							|  |  |  |  | 			float volume | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD>ò<EFBFBD><C3B2>Ž<EFBFBD><C5BD><EFBFBD>ʱ<EFBFBD><CAB1>ִ<EFBFBD>к<EFBFBD><D0BA><EFBFBD>
 | 
					
						
							|  |  |  |  | 		void SetCallbackOnEnd( | 
					
						
							|  |  |  |  | 			const Function& func | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿһ<C3BF>β<EFBFBD><CEB2>Ž<EFBFBD><C5BD><EFBFBD>ʱ<EFBFBD><CAB1>ִ<EFBFBD>к<EFBFBD><D0BA><EFBFBD>
 | 
					
						
							|  |  |  |  | 		void SetCallbackOnLoopEnd( | 
					
						
							|  |  |  |  | 			const Function& func | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ IXAudio2SourceVoice <20><><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		IXAudio2SourceVoice * GetSourceVoice() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	protected: | 
					
						
							| 
									
										
										
										
											2018-09-06 23:26:32 +08:00
										 |  |  |  | 		bool ReadMMIO(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 23:26:32 +08:00
										 |  |  |  | 		bool ResetFile(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 23:26:32 +08:00
										 |  |  |  | 		bool Read( | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 			BYTE* buffer, | 
					
						
							|  |  |  |  | 			DWORD size_to_read | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-06 23:26:32 +08:00
										 |  |  |  | 		bool FindMediaFileCch( | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 			wchar_t* dest_path, | 
					
						
							|  |  |  |  | 			int cch_dest, | 
					
						
							|  |  |  |  | 			const wchar_t * file_name | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	protected: | 
					
						
							|  |  |  |  | 		bool					opened_; | 
					
						
							|  |  |  |  | 		DWORD					size_; | 
					
						
							|  |  |  |  | 		CHAR*					buffer_; | 
					
						
							|  |  |  |  | 		BYTE*					wave_data_; | 
					
						
							|  |  |  |  | 		HMMIO					hmmio_; | 
					
						
							|  |  |  |  | 		MMCKINFO				ck_; | 
					
						
							|  |  |  |  | 		MMCKINFO				ck_riff_; | 
					
						
							|  |  |  |  | 		WAVEFORMATEX*			wfx_; | 
					
						
							|  |  |  |  | 		VoiceCallback			callback_; | 
					
						
							|  |  |  |  | 		IXAudio2SourceVoice*	voice_; | 
					
						
							|  |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	// <20><><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 	class Data | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		Data( | 
					
						
							|  |  |  |  | 			const String& key,					/* <20><>ֵ */ | 
					
						
							|  |  |  |  | 			const String& field = L"Defalut"	/* <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool Exists() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD> int <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		bool SaveInt( | 
					
						
							|  |  |  |  | 			int value | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD> float <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		bool SaveFloat( | 
					
						
							|  |  |  |  | 			float value | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD> double <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		bool SaveDouble( | 
					
						
							|  |  |  |  | 			double value | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD> bool <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		bool SaveBool( | 
					
						
							|  |  |  |  | 			bool value | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD> String <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		bool SaveString( | 
					
						
							|  |  |  |  | 			const String& value | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ int <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		int GetInt() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ float <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		float GetFloat() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ double <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		double GetDouble() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ bool <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		bool GetBool() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ <20>ַ<EFBFBD><D6B7><EFBFBD> <20><><EFBFBD>͵<EFBFBD>ֵ
 | 
					
						
							|  |  |  |  | 		String GetString(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	protected: | 
					
						
							|  |  |  |  | 		String key_; | 
					
						
							|  |  |  |  | 		String field_; | 
					
						
							|  |  |  |  | 		const String& data_path_; | 
					
						
							|  |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	// <20>ļ<EFBFBD>
 | 
					
						
							|  |  |  |  | 	class File | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		File(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		File( | 
					
						
							|  |  |  |  | 			const String& file_name | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		virtual ~File(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool Open( | 
					
						
							|  |  |  |  | 			const String& file_name | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool Exists() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool IsFolder() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// ɾ<><C9BE><EFBFBD>ļ<EFBFBD>
 | 
					
						
							|  |  |  |  | 		bool Delete(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ<EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							|  |  |  |  | 		const String& GetPath() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>չ<EFBFBD><D5B9>
 | 
					
						
							|  |  |  |  | 		String GetExtension() const; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20>ͷ<EFBFBD><CDB7><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>Ŀ¼
 | 
					
						
							|  |  |  |  | 		static File Extract( | 
					
						
							|  |  |  |  | 			int resource_name,				/* <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 			const String& resource_type,	/* <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 			const String& dest_file_name	/* Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							|  |  |  |  | 		static void AddSearchPath( | 
					
						
							|  |  |  |  | 			const String& path | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
 | 
					
						
							|  |  |  |  | 		static bool CreateFolder( | 
					
						
							|  |  |  |  | 			const String& dir_path	/* <20>ļ<EFBFBD><C4BC><EFBFBD>·<EFBFBD><C2B7> */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ի<EFBFBD><D4BB><EFBFBD>
 | 
					
						
							|  |  |  |  | 		static File ShowOpenDialog( | 
					
						
							|  |  |  |  | 			const String& title = L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",	/* <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 			const String& filter = L""		/* ɸѡ<C9B8><D1A1>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "*.jpg;*.jpeg" */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ի<EFBFBD><D4BB><EFBFBD>
 | 
					
						
							|  |  |  |  | 		static File ShowSaveDialog( | 
					
						
							|  |  |  |  | 			const String& title = L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",	/* <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ | 
					
						
							|  |  |  |  | 			const String& def_file = L"",	/* Ĭ<>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> */ | 
					
						
							|  |  |  |  | 			const String& def_ext = L""		/* Ĭ<><C4AC><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "txt" */ | 
					
						
							|  |  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	protected: | 
					
						
							|  |  |  |  | 		DWORD attributes_; | 
					
						
							|  |  |  |  | 		String file_path_; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		static std::list<String> search_paths_; | 
					
						
							|  |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 	// ·<><C2B7>
 | 
					
						
							|  |  |  |  | 	class Path | 
					
						
							|  |  |  |  | 	{ | 
					
						
							|  |  |  |  | 	public: | 
					
						
							|  |  |  |  | 		// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݵ<EFBFBD>Ĭ<EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							|  |  |  |  | 		static const String& GetDataPath(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ<EFBFBD><C8A1>ʱ<EFBFBD>ļ<EFBFBD>Ŀ¼
 | 
					
						
							|  |  |  |  | 		static const String& GetTemporaryPath(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ LocalAppData Ŀ¼
 | 
					
						
							|  |  |  |  | 		static const String& GetLocalAppDataPath(); | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-05 13:38:30 +08:00
										 |  |  |  | 		// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
 | 
					
						
							|  |  |  |  | 		static const String& GetExeFilePath(); | 
					
						
							|  |  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-09-05 13:33:39 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | } |