QQ登录

只需一步,快速开始

188上位机VC MFC利用INI文件保存读取各种参数数据

[ 复制链接 ]

188上位机VC MFC利用INI文件保存读取各种参数数据

188上位机VC MFC利用INI文件保存读取各种参数数据
188上位机VC MFC利用INI文件保存读取各种参数数据
功能展示
INI文件的操作在前面例程有稍作介绍,INI是微软提供的方便快捷数据保存操作的文件类型,提供多种函数实现INI文件的操作,例程举例INI文件字符器,整形,结构体类型数据的操作,效果如图;
要点提示
对于INI文件字符串类型的保存与读取操作可以用函数WritePrivateProfileString()GetPrivateProfileString()
WritePrivateProfileString()函数原型BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTRlpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);
其中各参数的意义
LPCTSTR lpAppName 是INI文件中的一个字段名.
LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.
LPCTSTR lpFileName 是完整的INI文件名,如果没有指定完整路径名,则会在windows目录(默认)查找文件。如果文件没有找到,则函数会在windows目录创建它。
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目录中查找文件
整数,浮点数可以通过转换后再像字符串一样操作;
结构体的操作可以用函数WritePrivateProfileStruct(),GetPrivateProfileStruct()
实现功能
1.新建基于对话框的应用程序
2.拖拽一编辑框ID为IDC_EDIT1,及按钮<选择INI文件目录>用于INI文件的路径选择;
手提一编辑框ID为IDC_EDIT2,及按钮<保存字符串到INI文件><从INI文件读字符串>用于对INI文件进行字符串的读写操作;
拖拽一编辑框ID为IDC_EDIT3,及按钮<保存整数到INI文件><从INI文件读整数>用于对INI文件进行整数的读写操作;
拖拽三编辑框ID分别 为IDC_EDIT4,IDC_EDIT5, IDC_EDIT6,及按钮<保存结构体到INI文件><从INI文件读结构体>实现对INI文件进行结构体的读写操作;
按钮代码分别 为
  1. void CGkbc8Dlg::OnChoose()//ini文件路径的选择
  2. {
  3.         CHAR BUF[MAX_PATH];
  4.         BROWSEINFO bi;
  5.         ZeroMemory(&bi,sizeof(BROWSEINFO));
  6.         bi.hwndOwner=this->m_hWnd;
  7.         bi.lpszTitle="选择文件夹";
  8.         bi.ulFlags=BIF_EDITBOX ;
  9.         bi.pszDisplayName=BUF;
  10.         LPITEMIDLIST lpitem=SHBrowseForFolder(&bi);
  11.         if(lpitem==NULL) //如果没有选择路径则返回
  12.                 return ;
  13.         SHGetPathFromIDList(lpitem,BUF);
  14.         CString sINIFileName(BUF);
  15.         sINIFileName+="\\工控编程吧.INI";
  16.         SetDlgItemText(IDC_EDIT1,sINIFileName);
  17. }
复制代码
  1. void CGkbc8Dlg::OnSection() //向INI文件写入字符串
  2. {
  3.         CString sFilePath,sData;
  4.         GetDlgItemText(IDC_EDIT1,sFilePath);
  5.         GetDlgItemText(IDC_EDIT2,sData);
  6.         WritePrivateProfileString("AppName","KeyName_STRING",sData,sFilePath);}
  7. void CGkbc8Dlg::OnReadstr() //从INI文件读字符串
  8. {
  9.         CString sFilePath;
  10.         CHAR ch[MAX_PATH];
  11.         GetDlgItemText(IDC_EDIT1,sFilePath);
  12.         GetPrivateProfileString("AppName","KeyName_STRING","",ch,MAX_PATH,sFilePath);
  13.         SetDlgItemText(IDC_EDIT2,ch);}
  14. void CGkbc8Dlg::OnSaveini() //向INI文件写整数
  15. {
  16.         CString sFilePath,sData;
  17.         GetDlgItemText(IDC_EDIT1,sFilePath);
  18.         int nData = GetDlgItemInt(IDC_EDIT3);
  19.         sData.Format("%d",nData);
  20.         WritePrivateProfileString("AppName","KeyName_INT",sData,sFilePath);        }
  21. void CGkbc8Dlg::OnReadini() //从INI文件读整数
  22. {
  23.         CString sFilePath;
  24.         CHAR ch[MAX_PATH];
  25.         GetDlgItemText(IDC_EDIT1,sFilePath);//INI文件路径获取
  26.         GetPrivateProfileString("AppName","KeyName_INT","",ch,MAX_PATH,sFilePath);
  27.         int nData = atoi(ch);
  28.         SetDlgItemInt(IDC_EDIT3,nData);        }
  29. void CGkbc8Dlg::OnSavestruct() //向INI文件写结构体数据
  30. {
  31.         CString sFilePath;
  32.         GetDlgItemText(IDC_EDIT1,sFilePath);//INI文件路径获取
  33.         WEBSITE WebSite;
  34.         ZeroMemory(&WebSite,sizeof(WEBSITE));
  35.         WebSite.nIndex=GetDlgItemInt(IDC_EDIT4);
  36.         GetDlgItemText(IDC_EDIT5,WebSite.SiteName,MAX_PATH);
  37.         GetDlgItemText(IDC_EDIT6,WebSite.SiteAddr,MAX_PATH);//结构体赋值;
  38.         WritePrivateProfileStruct("AppName","KeyName_STRUCT",&WebSite,sizeof(WebSite),sFilePath);}
复制代码
  1. void CGkbc8Dlg::OnReadstruct()
  2. {
  3.         CString sFilePath;
  4.         GetDlgItemText(IDC_EDIT1,sFilePath);//INI文件路径获取
  5.         
  6.         WEBSITE WebSite;
  7.         ZeroMemory(&WebSite,sizeof(WEBSITE));
  8.         
  9.         GetPrivateProfileStruct("AppName","KeyName_STRUCT",&WebSite,sizeof(WebSite),sFilePath);
  10.         SetDlgItemInt(IDC_EDIT4,WebSite.nIndex);
  11.         SetDlgItemText(IDC_EDIT5,WebSite.SiteName);
  12.         SetDlgItemText(IDC_EDIT6,WebSite.SiteAddr);
  13. }
复制代码
我们来演示整个功能实现过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:188.上位机VC MFC利用INI文件保存读取各种参数数据.rar 
文件大小:121.94 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索