您的位置:首页 > 编程语言 > C语言/C++

MFC中用c++语言对配置文件操作(读、写)

2017-11-06 10:10 357 查看
一.在VS2015中创建新项目->MFC应用程序->基于对话框



二.在对话框中添加两个Button控件,分别更名为:读配置文件、写配置文件,再添加一个Edit编辑框



三.双击“读配置文件”Button进入代码编写,添加如下代码:

void CConfigurationFileDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
char tServerip[MAX_PATH] = { 0 };
DWORD dret = GetPrivateProfileString(_T("serverinfo"), _T("addr"), _T("du cuo le"), tServerip, 50, _T("D:\\VSProject\\ConfigurationFile\\Release\\config.ini"));
m_serverip = tServerip;
m_port = GetPrivateProfileInt(_T("serverinfo"), _T("port"), -1, _T("D:\\VSProject\\ConfigurationFile\\Release\\config.ini"));

CFile   file1("D:\\VSProject\\ConfigurationFile\\Release\\config.ini ", CFile::modeRead);
char   *pBuf;
int   iLen = file1.GetLength();
pBuf = new   char[iLen + 1];
file1.Read(pBuf, iLen);
pBuf[iLen] = 0;
file1.Close();
SetDlgItemText(IDC_EDIT_TEST, pBuf);
}


四.双击“写配置文件”进入代码编写,添加如下代码:

void CConfigurationFileDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
BOOL Bw1 = WritePrivateProfileString(_T("serverinfo"), _T("addr"), "192.168.0.2", _T("D:\\VSProject\\ConfigurationFile\\Release\\config.ini"));
BOOL Bw2 = WritePrivateProfileString(_T("serverinfo"), _T("port"), "81", _T("D:\\VSProject\\ConfigurationFile\\Release\\config.ini"));
if (!Bw2)
::MessageBox(NULL,_T("写入失败"),_T("失败"),0);
else
::MessageBox(NULL,_T("写入成功"),_T("成功"),0);
}


注意:在读文件时也要双击一下Edit编辑框,否则无法找到IDC_EDIT_TEST

*重要函数:
GetPrivateProfileString
//为初始化文件中指定的条目取得字串,是编辑语言中的一种函数结构。

函数原型:

DWORD GetPrivateProfileString(lpszSection, lpszKey, lpszDefault,lpReturnedString, cchReturnBuffer, lpszFile)


参数及类型说明:

lpApplicationName String,欲在其中查找条目的小节名称。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载这个ini文件所有小节的列表。
lpKeyName String,欲获取的项名或条目名。这个字串不区分大小写。如设为vbNullString,就在lpReturnedString缓冲区内装载指定小节所有项的列表
lpDefault String,指定的条目没有找到时返回的默认值。可设为空("")
lpReturnedString String,指定一个字串缓冲区,长度至少为nSize
nSize Long,指定装载到lpReturnedString缓冲区的最大字符数量
lpFileName String,初始化文件的名字。如没有指定一个完整路径名,windows就在Windows目录中查找文件


*重要函数:
SetDlgItemTex
//在对话框中设置控件的标题或文本。

语法:

BOOL WINAPI SetDlgItemText(
_In_ HWND hDlg,
_In_  int      nIDDlgItem,
_In_ LPCTSTR lpString
);


参数:

hDlg [in]
类型:HWND
包含该控件的对话框的句柄。
nIDDlgItem [in]
类型:int
要设置标题或文本的控件。
lpString [in]
类型:LPCTSTR
要复制到控件的文本。


返回值:

类型:BOOL
如果函数成功,则返回值为非零。
如果函数失败,返回值为零。要获得扩展错误信息,请调用GetLastError。


*重要函数:
WritePrivateProfileString
//将一个字符串复制到初始化文件的指定部分。

语法:

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


参数:

lpAppName [in]
字符串将被复制到的部分的名称。如果该部分不存在,则创建该部分。该部分的名称是与案例无关的; 该字符串可以是大写和小写字母的任意组合。
lpKeyName [in]
与字符串关联的键的名称。如果指定部分中不存在该键,则会创建该键。如果此参数为NULL,则删除整个部分(包括该部分中的所有条目)。
lpString [in]
一个零封端的字符串写入文件。如果此参数为NULL,则删除由lpKeyName参数指向的键。
lpFileName [in]
初始化文件的名称。
如果该文件是使用Unicode字符创建的,则该函数会将Unicode字符写入该文件。否则,该函数将写入ANSI字符。


返回值:

如果函数成功地将字符串复制到初始化文件中,则返回值不为零。
如果函数失败,或者刷新最近访问的初始化文件的缓存版本,则返回值为零。要获得扩展错误信息,请调用 GetLastError。


O(∩_∩)O哈哈~到这对配置文件的读写操作就算完了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: