///////////////////////////////////
// ECCSkelton
// 簡易*.iniファイル利用
// CINIクラス定義ファイル
// Copyright (c) August, 2022
//        By Ysama
///////////////////////////////////

class CINI
{
private:
	WCHAR m_FileName[MAX_PATH];				//*.iniファイルのファイルパス、名

public:
	CINI();									//コンストラクター
	CINI(WCHAR*);							//*.iniファイルパス、名付コンストラクター
	void SetName(WCHAR*);					//*.iniファイルパス、名設定
	void SetNameOnly(WCHAR*);				//Windowsのあるパスへの*.iniファイル名設定
	WCHAR* ReadStr(WCHAR*, WCHAR*);			//*.iniファイルからの読み込み
	void WriteStr(WCHAR*, WCHAR*, WCHAR*);	//*.iniファイルへの書き込み
	int ReadInt(WCHAR*, WCHAR*);			//*.iniファイルからの読み込み
	void WriteInt(WCHAR*, WCHAR*, int);		//*.iniファイルへの書き込み
};

//コンストラクター
CINI::CINI() {

	*m_FileName = L'\0';
}

//*.iniファイルパス、名付コンストラクター
CINI::CINI(WCHAR* FilePathName) {

	lstrcpyW(m_FileName, FilePathName);
}

//*.iniファイルパス、名設定
void CINI::SetName(WCHAR* FilePathName) {

	lstrcpyW(m_FileName, FilePathName);
}

//Windowsのあるパスへの*.iniファイル名設定
void CINI::SetNameOnly(WCHAR* FileName) {

	WCHAR WinPath[MAX_PATH];
	GetWindowsDirectory(WinPath, MAX_PATH);
	lstrcpyW(m_FileName, WinPath);
	lstrcatW(m_FileName, L"\\");
	lstrcatW(m_FileName, FileName);
}

//*.iniファイルからの読み込み
WCHAR* CINI::ReadStr(WCHAR* Title, WCHAR* Name) {

	static WCHAR Buff[MAX_PATH * 4];
	if(GetPrivateProfileStringW(Title, Name, L"Not Found", Buff, MAX_PATH * 4, m_FileName) > 0)
		return Buff;
	else
		return NULL;
}

//*.iniファイルへの書き込み
void CINI::WriteStr(WCHAR* Title, WCHAR* Name, WCHAR* Data) {

	WritePrivateProfileStringW(Title, Name, Data, m_FileName);
}

//*.iniファイルからの読み込み
int CINI::ReadInt(WCHAR* Title, WCHAR* Name) {

	return GetPrivateProfileIntW(Title, Name, 0, m_FileName);
}

//*.iniファイルへの書き込み
void CINI::WriteInt(WCHAR* Title, WCHAR* Name, int Data) {

	WCHAR Buff[MAX_PATH];
	_itow(Data, Buff, 10);
	WritePrivateProfileStringW(Title, Name, Buff, m_FileName);
}
