C++ MFC 通过文件对话框读写INI 文件
本文详细介绍C++ MFC 读写INI文件,以及如何操作文件对话框:
读取ini文件
BOOL isOpen = TRUE; //是否打开(否则为保存)
CString defaultDir = L"C:\\"; //默认打开的文件路径
CString fileName = L""; //默认打开的文件名
CString filter = L"文件 (*.ini; *.cfg)|*.ini;*.cfg||"; //文件过虑的类型
CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY|OFN_READONLY, filter, NULL);
openFileDlg.GetOFN().lpstrInitialDir = L"E:\\FileTest\\test.ini";
INT_PTR result = openFileDlg.DoModal();
CString filePath = defaultDir + _T("\\test.ini");
if(result == IDOK) {
filePath = openFileDlg.GetPathName();
}else{
return;
}
//读取采集参数配置文件
int iTmp;
iTmp = GetPrivateProfileInt(_T("ACQPARAM"),_T("ACQCLK") , 0, filePath);
m_AcqClkSrc.SetCurSel(iTmp);
CString sTmp;
GetPrivateProfileString(_T("ACQPARAM"),_T("EXCLKFRE"),_T(""),sTmp.GetBuffer(256),256,filePath);
m_ExtrFre = _wtof(sTmp); //转double 赋值给界面
GetPrivateProfileString(_T("ACQPARAM"),_T("CHUNIT"),_T(""),m_Unit.GetBuffer(256),256,filePath);
UpdateData(FALSE); //刷新界面
写入ini文件
BOOL isOpen = FALSE; //是否打开(否则为保存)
CString defaultDir = L"C:\\"; //默认打开的文件路径
CString fileName = L"test.ini"; //默认打开的文件名
CString filter = L"文件 (*.ini; *.cfg)|*.ini;*.cfg||"; //文件过虑的类型
CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, filter, NULL);
openFileDlg.GetOFN().lpstrInitialDir = L"C:\\test.ini";
INT_PTR result = openFileDlg.DoModal();
CString filePath = defaultDir + _T("\\") + fileName;
if(result == IDOK) {
filePath = openFileDlg.GetPathName();
}else{
return;
}
TCHAR buf[256];
CString stmp;
wsprintf(buf, _T("%d"), m_AcqClkSrc.GetCurSel());
WritePrivateProfileString(_T("ACQPARAM"), _T("ACQCLK"), buf, filePath);
stmp.Format(_T("%f"),m_ExtrFre);
wsprintf(buf, _T("%s"), stmp.GetBuffer(stmp.GetLength()));
WritePrivateProfileString(_T("ACQPARAM"), _T("EXCLKFRE"), buf, filePath);
wsprintf(buf, _T("%d"), m_AcqFre.GetCurSel());
WritePrivateProfileString(_T("ACQPARAM"), _T("ACQFRE"), buf, filePath);
stmp.Format(_T("%f"),m_Len);
wsprintf(buf, _T("%s"), stmp.GetBuffer(stmp.GetLength()));
WritePrivateProfileString(_T("ACQPARAM"), _T("ACQLEN"), buf, filePath);
stmp.Format(_T("%f"),m_Dly);
wsprintf(buf, _T("%s"), stmp.GetBuffer(stmp.GetLength()));
WritePrivateProfileString(_T("ACQPARAM"), _T("DLGLEN"), buf, filePath);
wsprintf(buf, _T("%d"), m_Rg.GetCurSel());
WritePrivateProfileString(_T("ACQPARAM"), _T("ACQRG"), buf, filePath);
wsprintf(buf, _T("%d"), m_Cpl);
WritePrivateProfileString(_T("ACQPARAM"), _T("CPL"), buf, filePath);
wsprintf(buf, _T("%d"), m_Filter.GetCurSel());
WritePrivateProfileString(_T("ACQPARAM"), _T("FILTERFRE"), buf, filePath);
stmp.Format(_T("%f"),m_K);
wsprintf(buf, _T("%s"), stmp.GetBuffer(stmp.GetLength()));
WritePrivateProfileString(_T("ACQPARAM"), _T("KVALUE"), buf, filePath);
WritePrivateProfileString(_T("ACQPARAM"), _T("OFFSET"), buf, filePath);
wsprintf(buf, _T("%s"), m_UnitFlag);
WritePrivateProfileString(_T("ACQPARAM"), _T("CHUNITFLAG"), buf, filePath);
AfxMessageBox(_T("导出参数成功!"));