MFC读取ini文件(详细示例)

前言:

转载请附上连接,本帖原创请勿照抄。

    MFC之读取ini文件,有详细示例以及Demo和说明。环境VS2017(如果版本不同请降低版本或者降代码复制你的项目中)。实现了对ini文件的添加、覆盖、读取。均是拿界面做出来的。

1.基本界面

2.选择文件

/**
*点击选择文件按钮弹出File选项框来进行选择ini文件,选择好ini文件之后会将选择的ini文件传给界面的编辑框 
*/
void CMFCTestIniDlg::OnBnClickedButton5()
{
	CString m_strFilePathName;
	CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("All Files(*.ini)|*.ini|所有文件(*.*)|*.*|"), NULL);
	if (dlg.DoModal())
	{
		m_strFilePathName = dlg.GetPathName();
	}
	SetDlgItemText(IDC_EDIT1, m_strFilePathName);
}

3.查询功能

/**
*查询ini字段,根据编辑框的id来获得编辑框内的路径。进行查询字段
*/
void CMFCTestIniDlg::OnBnClickedButton1()
{
	CFileFind finder;
	CString IniFile = "";
	GetDlgItem(IDC_EDIT1)->GetWindowText(IniFile);
	//查找是否存在ini文件,若不存在,则生成一个新的默认设置的ini文件,这样就保证了我们更改后的设置每次都可用  
	BOOL ifFind = finder.FindFile(IniFile);
	if (!ifFind)
	{
		AfxMessageBox("没有该文件");
		return;
	}
        //返回编辑框查询到的字段
	CString str;
	GetPrivateProfileString("MYSQL","HostName", "", str.GetBuffer(MAX_PATH), MAX_PATH, IniFile);
	SetDlgItemText(IDC_EDIT2, str);
	GetPrivateProfileString("MYSQL", "Port", "", str.GetBuffer(MAX_PATH), MAX_PATH, IniFile);
	SetDlgItemText(IDC_EDIT3, str);
	GetPrivateProfileString("MYSQL", "UserName", "", str.GetBuffer(MAX_PATH), MAX_PATH, IniFile);
	SetDlgItemText(IDC_EDIT4, str);
	GetPrivateProfileString("MYSQL", "PassWord", "", str.GetBuffer(MAX_PATH), MAX_PATH, IniFile);
	SetDlgItemText(IDC_EDIT5, str);
}

4.修改

/**
*根据编辑框id来获取ini文件路径,使用CFile File来清除之前的数据,在将界面的值写入ini文件中
*/
void CMFCTestIniDlg::OnBnClickedButton2()
{
	CString IniFile = "";
	GetDlgItem(IDC_EDIT1)->GetWindowText(IniFile);
	CFile File;
	//这个File用来清空ini文件里面的内容 如果需要直接在后面添加请屏蔽File
	File.Open(IniFile, CFile::modeCreate | CFile::modeWrite, NULL);
	File.Close();
	CFileFind finder;

	//查找是否存在ini文件,若不存在的话弹出提示
	BOOL ifFind = finder.FindFile(IniFile);
	if (!ifFind)
	{
		AfxMessageBox("没有该文件");
		return;
	}

	CString str="",StrTop="MYSQL",StrHostName="HostName",StrPort="Port",StrUserName="UserName",StrPassWord="PassWord";
	GetDlgItemText(IDC_EDIT6, str);
	WritePrivateProfileStringW(StrTop.AllocSysString(), StrHostName.AllocSysString(), str.AllocSysString(), IniFile.AllocSysString());
	GetDlgItemText(IDC_EDIT7, str);
	WritePrivateProfileStringW(StrTop.AllocSysString(), StrPort.AllocSysString(), str.AllocSysString(), IniFile.AllocSysString());
	GetDlgItemText(IDC_EDIT8, str);
	WritePrivateProfileStringW(StrTop.AllocSysString(), StrUserName.AllocSysString(), str.AllocSysString(), IniFile.AllocSysString());
	GetDlgItemText(IDC_EDIT9, str);
	WritePrivateProfileStringW(StrTop.AllocSysString(), StrPassWord.AllocSysString(), str.AllocSysString(), IniFile.AllocSysString());
}

5.刷新

/**
*点击刷新按钮实现编辑框刷新
*/
void CMFCTestIniDlg::OnBnClickedButton4()
{
	Edit();
}

void CMFCTestIniDlg::Edit()
{
	SetDlgItemText(IDC_EDIT2, "");
	SetDlgItemText(IDC_EDIT3, "");
	SetDlgItemText(IDC_EDIT4, "");
	SetDlgItemText(IDC_EDIT5, "");
	SetDlgItemText(IDC_EDIT6, "");
	SetDlgItemText(IDC_EDIT7, "");
	SetDlgItemText(IDC_EDIT8, "");
	SetDlgItemText(IDC_EDIT9, "");
}

猜你喜欢

转载自blog.csdn.net/qq_37529913/article/details/103764736