工控编程吧
标题:
188上位机VC MFC利用INI文件保存读取各种参数数据
[打印本页]
作者:
qq263946146
时间:
2016-1-29 21:11
标题:
188上位机VC MFC利用INI文件保存读取各种参数数据
(, 下载次数: 5)
上传
点击文件名下载附件
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文件进行结构体的读写操作;
按钮代码分别 为
void CGkbc8Dlg::OnChoose()//ini文件路径的选择
{
CHAR BUF[MAX_PATH];
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner=this->m_hWnd;
bi.lpszTitle="选择文件夹";
bi.ulFlags=BIF_EDITBOX ;
bi.pszDisplayName=BUF;
LPITEMIDLIST lpitem=SHBrowseForFolder(&bi);
if(lpitem==NULL) //如果没有选择路径则返回
return ;
SHGetPathFromIDList(lpitem,BUF);
CString sINIFileName(BUF);
sINIFileName+="\\工控编程吧.INI";
SetDlgItemText(IDC_EDIT1,sINIFileName);
}
复制代码
void CGkbc8Dlg::OnSection() //向INI文件写入字符串
{
CString sFilePath,sData;
GetDlgItemText(IDC_EDIT1,sFilePath);
GetDlgItemText(IDC_EDIT2,sData);
WritePrivateProfileString("AppName","KeyName_STRING",sData,sFilePath);}
void CGkbc8Dlg::OnReadstr() //从INI文件读字符串
{
CString sFilePath;
CHAR ch[MAX_PATH];
GetDlgItemText(IDC_EDIT1,sFilePath);
GetPrivateProfileString("AppName","KeyName_STRING","",ch,MAX_PATH,sFilePath);
SetDlgItemText(IDC_EDIT2,ch);}
void CGkbc8Dlg::OnSaveini() //向INI文件写整数
{
CString sFilePath,sData;
GetDlgItemText(IDC_EDIT1,sFilePath);
int nData = GetDlgItemInt(IDC_EDIT3);
sData.Format("%d",nData);
WritePrivateProfileString("AppName","KeyName_INT",sData,sFilePath); }
void CGkbc8Dlg::OnReadini() //从INI文件读整数
{
CString sFilePath;
CHAR ch[MAX_PATH];
GetDlgItemText(IDC_EDIT1,sFilePath);//INI文件路径获取
GetPrivateProfileString("AppName","KeyName_INT","",ch,MAX_PATH,sFilePath);
int nData = atoi(ch);
SetDlgItemInt(IDC_EDIT3,nData); }
void CGkbc8Dlg::OnSavestruct() //向INI文件写结构体数据
{
CString sFilePath;
GetDlgItemText(IDC_EDIT1,sFilePath);//INI文件路径获取
WEBSITE WebSite;
ZeroMemory(&WebSite,sizeof(WEBSITE));
WebSite.nIndex=GetDlgItemInt(IDC_EDIT4);
GetDlgItemText(IDC_EDIT5,WebSite.SiteName,MAX_PATH);
GetDlgItemText(IDC_EDIT6,WebSite.SiteAddr,MAX_PATH);//结构体赋值;
WritePrivateProfileStruct("AppName","KeyName_STRUCT",&WebSite,sizeof(WebSite),sFilePath);}
复制代码
void CGkbc8Dlg::OnReadstruct()
{
CString sFilePath;
GetDlgItemText(IDC_EDIT1,sFilePath);//INI文件路径获取
WEBSITE WebSite;
ZeroMemory(&WebSite,sizeof(WEBSITE));
GetPrivateProfileStruct("AppName","KeyName_STRUCT",&WebSite,sizeof(WebSite),sFilePath);
SetDlgItemInt(IDC_EDIT4,WebSite.nIndex);
SetDlgItemText(IDC_EDIT5,WebSite.SiteName);
SetDlgItemText(IDC_EDIT6,WebSite.SiteAddr);
}
复制代码
我们来演示整个功能实现过程
[iqiyi]http://player.video.qiyi.com/e3e40ecaf979ca7b607e4c83d20797ed/0/0/w_19rtbcx7gp.swf-albumId=5268286309-tvId=5268286309-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 1)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4