본문 바로가기

프로그래밍

[ MFC ] ini 파일 입출력 Win32 API함수 (GetPrivateProfileString, WritePrivateProfileString)

파일에 쓸때:
 - 형식:
WritePrivateProfileStringA(
    LPCWSTR lpAppName,
    LPCWSTR lpKeyName,
    LPCWSTR lpString,
    LPCWSTR lpFileName
    );

 - 사용법:
  WritePrivateProfileString("카테고리", "파라메터", 저장하고자하는항목(변수), ini파일의 위치);

실 사용 예:
  char szCurDir[256] = {NULL, };
  int port;
  CString strPort;
  GetCurrentDirectory(256, szCurDir);
  strcat(szCurDir, "\\server.ini");
  strPort.Format("%d", port);
  WritePrivateProfileString("Server", "Port", m_nPort, szCurDir);
  strMsg.Format("%d", size);

파일로부터 읽어올때:
 - 형식:
GetPrivateProfileStringA(
    LPCSTR lpAppName,
    LPCSTR lpKeyName,
    LPCSTR lpDefault,
    LPSTR lpReturnedString,
    DWORD nSize,
    LPCSTR lpFileName
    );

 - 사용법:
 GetPrivateProfileString("카테고리", "파라메터", "기본값", 저장할곳, 읽어올바이트수, ini파일의 위치);

실 사용 예:
 CString strButt;
 int port, m_nPort;
 char szBuffer[256] = {NULL , };
 char szCurDir[256] = {NULL, };
 GetCurrentDirectory(256, szCurDir);
 strcat(szCurDir, "\\server.ini");
 GetPrivateProfileString("Server", "Port", "15000", szBuffer, 256, szCurDir);
 strBuff.Format("%s", szBuffer);
 port = atoi(szBuffer);
 m_nPort.Format("%d", port);

==========================================================================================

INI 파일 구조:
ex>
[INPUT]                      // 섹션
inputDevice = 255         // 키 = 키값

GetPrivateProfileString

DWORD WINAPI GetPrivateProfileString( __in LPCTSTR lpAppName, __in LPCTSTR lpKeyName, __in LPCTSTR lpDefault, __out LPTSTR lpReturnedString, __in DWORD nSize, __in LPCTSTR lpFileName );

- lpAppName : 값을 가져올 키가 속해있는 [섹션]의 문자열입니다.
- lpKeyName : 값을 가져올 키를 의미합니다.
- lpDefault : 해당되는 값이 없을 경우, 기본값으로 리턴할 문자열(키값)을 입력합니다.
- lpReturnedString : 문자열을 리턴할 String입니다. 보통은 (char *)형식으로 값을 넣으시면 되지만, 여기서는 vs 2005가 유니코드 형식을 이용하므로 (TCHAR *)을 이용하도록 하겠습니다.
- nSize : 가져올 키값의 길이입니다. 적당한 길이로 입력해주시면 상관 없습니다 :)
- lpFileName : 읽어올 ini파일의 경로입니다.

[INPUT]섹션의 inputDevice 키값을 가져오려면 -
TCHAR str[255] = {NULL, };
GetPrivateProfileString( "INPUT", "inputDevice", "0", str, 255, ".\\config_caster.ini")

WritePrivateProfileString

ini파일의 키값을 수정/입력할 때 쓰이는 함수입니다.

BOOL WINAPI WritePrivateProfileString( __in LPCTSTR lpAppName, __in LPCTSTR lpKeyName, __in LPCTSTR lpString, __in LPCTSTR lpFileName );

- lpAppName : 값을 입력할 키가 속해있는 [섹션]의 문자열입니다.
- lpKeyName : 값을 입력할키를 의미합니다.
- lpString : 쓸 키 값입니다. vs 2005에서는 유니코드 형식으로 입력해 주셔야 합니다.
- lpFileName : 쓸 ini파일의 경로입니다.

[INPUT]섹션의 inputDevice 키값을 수정하려면 -
CString str;
str.Format(_T("%d"), 255);
WritePrivateProfileString( "INPUT", "inputDevice", str, ".\\config_caster.ini")

출처 : http://kuna.wo.tc/942 << 예제파일도 존재함