본문으로 바로가기
728x90
반응형

 ini 파일은 설정 파일에 대한 표준으로 단순한 구조로 이루어진 텍스트 파일이다. 당연히 .ini로 되어 있고 텍스트 파일이기 때문에 메모장 또는 일반 편집기 등으로 열어볼 수 있다.

 GUI를 만들다보면 기본적으로 들어가 있으면 편한 내용이 있다. 예를 들면 기존에 연결했던 통신 포트라던가 아니면 기존에 접속했던 ID 또는 비번 등이 있다.

 기본은 INI 파일을 창을 닫을 때 생성하고 프로그램을 처음 시작할 때 INI 파일을 읽어서 필요한 정보에 적용하는 절차이다. INI 파일을 만드는 함수와 INI 파일을 읽는 함수를 만든다.

1. INI 파일 만드는 함수 (예시)

void CS8_Power_Test_JIGDlg::INI_File_Create()
{
	CString str, strSection, strKey, strValue;  

	strThisPath.Format(_T("%s\\%s"),chThisPath,"Setting.ini");

	CFile file(strThisPath, CFile::modeCreate|CFile::modeWrite);
	file.Close();

	strSection = _T("RS422");   // 섹션  
	strKey = _T("COMPORT");     // 키  
	strValue = m_comb_com_port;   // 값  
	WritePrivateProfileString(strSection, strKey, strValue, strThisPath);  
	strKey = _T("Baud Rate");  
	strValue = m_comb_baudrate;  
	WritePrivateProfileString(strSection, strKey, strValue, strThisPath);

	strSection = _T("TESTER");   // 섹션  
	strKey = _T("PSU");     // 키  
	GetDlgItemText(IDC_COMB_MKP_COM_PORT,strValue);	// 값
	WritePrivateProfileString(strSection, strKey, strValue, strThisPath);
	strKey = _T("DMM");     // 키  
	GetDlgItemText(IDC_EDIT_DMM_CONNECT,strValue);	// 값  
	WritePrivateProfileString(strSection, strKey, strValue, strThisPath);
	strKey = _T("OSC");     // 키  
	GetDlgItemText(IDC_EDIT_OSC_CONNECT,strValue);	// 값  
	WritePrivateProfileString(strSection, strKey, strValue, strThisPath);
}

2. INI 파일 읽기 (예시)

void CS8_Power_Test_JIGDlg::INI_File_Read()
{
	CString str;
	TCHAR inbuffer[100];  

	strThisPath.Format(_T("%s\\%s"),chThisPath,"Setting.ini");

	GetPrivateProfileString( "RS422", "COMPORT", "NoInfo", inbuffer, sizeof(inbuffer), strThisPath );
	m_comb_com_port.Format("%s",inbuffer);
	GetPrivateProfileString( "RS422", "Baud Rate", "NoInfo", inbuffer, sizeof(inbuffer), strThisPath );
	m_comb_baudrate.Format("%s",inbuffer);

	GetPrivateProfileString( "TESTER", "PSU", "NoInfo", inbuffer, sizeof(inbuffer), strThisPath );
	m_comb_mkp_com_port.Format("%s",inbuffer);
	GetPrivateProfileString( "TESTER", "DMM", "NoInfo", inbuffer, sizeof(inbuffer), strThisPath );
	SetDlgItemText(IDC_EDIT_DMM_CONNECT,inbuffer);
	GetPrivateProfileString( "TESTER", "OSC", "NoInfo", inbuffer, sizeof(inbuffer), strThisPath );
	SetDlgItemText(IDC_EDIT_OSC_CONNECT,inbuffer);
}

3. 프로그램 종료시에 INI 파일 만드는 함수 삽입

- 프로그램에 OnSysCommand 내부에 INI_File_Create(); 를 넣는다.

void CS8_Power_Test_JIGDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		INI_File_Create();
		CDialogEx::OnSysCommand(nID, lParam);
	}
}

4.  프로그램 시작시에 INI 파일 읽는 함수 삽입한다.

- OnInitDialog()에 INI_File_Read()를 실행할 수 있게 삽입한다.

5. 프로그램을 실행 후 닫으면 실행한 폴더에 다음과 같은 파일이 만들어진다.

728x90
반응형