#pragma once class CIniHelper { private: std::string m_fileName; bool m_checked; private: bool CheckFile() { if ( m_checked ) return true; // ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é »ý¼ºÇÑ´Ù. if( GetFileAttributesA(m_fileName.c_str()) == INVALID_FILE_ATTRIBUTES) { FILE *fp = fopen(m_fileName.c_str(), "ab"); if(fp) { m_checked = true; fclose(fp); return true; } else return false; } else { m_checked = true; return true; } return true; } public: CIniHelper(const char* fileName = "") { SetFile(fileName); } void SetFile(const char* fileName) { m_checked = false; m_fileName = fileName; } // Ini ÆÄÀÏ¿¡¼­ int °ªÀ» Àоî¿Â´Ù. int Read(const char* app, const char* key, int defaultValue) { return GetPrivateProfileIntA(app, key, defaultValue, m_fileName.c_str()); } // Ini ÆÄÀÏ¿¡¼­ ¹®ÀÚ¿­ °ªÀ» Àоî¿Â´Ù. std::string Read(const char* app, const char* key, const char* defaultValue) { char buf[2048] = {0,} ; GetPrivateProfileStringA(app, key, defaultValue, buf, sizeof(buf), m_fileName.c_str()); return std::string(buf); } // Ini ÆÄÀÏ¿¡ int °ªÀ» ¾´´Ù. bool Write(const char* app, const char* key, int v) { if(!CheckFile()) return false; char buf[2048] = {0,} ; StringCbPrintfA(buf, sizeof(buf), "%d", v); return WritePrivateProfileStringA(app, key, buf, m_fileName.c_str()) ? true : false; } // Ini ÆÄÀÏ¿¡ ¹®ÀÚ¿­ °ªÀ» ¾´´Ù. bool Write(const char* app, const char* key, const char* v) { if(!CheckFile()) return false; return WritePrivateProfileStringA(app, key, v, m_fileName.c_str()) ? true : false; } // Ini ÆÄÀÏ¿¡ ±â·ÏÇÑ ³»¿ëÀ» ÆÄÀÏ¿¡ ½ÇÁ¦·Î ¾´´Ù // ±â·ÏÀ» ÇÑ °æ¿ì ¹Ýµå½Ã È£ÃâÇØ ÁØ´Ù. bool Flush() { if(!CheckFile()) return false; return WritePrivateProfileStringA(NULL, NULL, NULL, m_fileName.c_str()) ? true : false ; } };