首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 开发频道>VC++ 6.0下对配置设置文件的存取访问

VC++ 6.0下对配置设置文件的存取访问

2004-11-22 09:00作者:信息产业部电子第二十二研究所青出处:天极网责任编辑:方舟

  三、 API函数的应用

  按照通常的编程习惯,一般在程序刚开始运行时对配置设置文件进行读取访问,获取其内存储的数据,并按照这些数据对程序进行配置,比如可以决定加载哪些组件、显示的位置等等。而存储一般比较灵活,可以显式地由用户发送命令来执行,也可以在程序退出前把当前状态存储其内,以便下次运行时能恢复到上次退出时的界面。下面就通过几个程序片段对前面提到过的访问配置文件的API函数的使用进行介绍:

  我们可以把视图类的:OnInitialUpdate() 函数作为程序启动时读取配置文件的入口,配置文件的存储格式如下:

[SECTION 1]
XPos=300
YPos=200

[SECTION 2]
Text=Hello

  仅有两个节,XPos和YPos标明了待显示信息的坐标,而待显示的信息存储在第二节的Text项中,用读取访问私有配置设置文件的API函数将其分别读入到变量m_nXPos,m_nYPos和m_strText中,并通过Invalidate()调用OnDraw()函数,在其内用TextOut函数将该信息在读取的坐标位置显示出来:

m_nXPos=GetPrivateProfileInt("SECTION 1", //节名
"XPos", //项名
0, //没找到此项时的缺省返回值
"C:\\test\\debug\\test.ini"); //配置文件的准确路径

m_nYPos=GetPrivateProfileInt("SECTION 1","YPos",0,exeFullPath);
char buf[256];
len=GetPrivateProfileString("SECTION 2", //节名
"Text", //项名
"No Text", //没找到此项时的返回值
buf, //目标缓冲区地址
256, //目标缓冲区长度
"C:\\test\\debug\\test.ini"); //配置文件的准确路径
for(int i=0;i<len;i++)
{
 CString str;
 str.Format("%c",buf[i]);
 m_strText+=str;
}
Invalidate();

  一般配置文件是和应用程序存放在同一个目录中的如果用"C:\\test\\debug\\test.ini"的绝对路径进行设置就会出现路径改变后找不到配置文件的问题,所以应动态搜寻配置文件的存放地址:

TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中有定义,为128
int len=GetModuleFileName(NULL,
exeFullPath, //应用程序的全路径存放地址
MAX_PATH);
CString path="\\test.ini"; //配置文件名
::strcpy(exeFullPath+len-13,path); //组合出配置文件的全路径

  写配置文件也基本类似,只是需要把数值类型的变量格式化成字符串再行存储:

str.Format("%d",m_nXPos);
WritePrivateProfileString("SECTION 1","XPos",str,exeFullPath);
str.Format("%d",m_nYPos);
WritePrivateProfileString("SECTION 1","YPos",str,exeFullPath);
WritePrivateProfileString("SECTION 2","Text",m_strText,exeFullPath);

  我们一定遇到过这样的程序:在执行过一遍以后,重启系统会自动加载该程序,其实除了在启动菜单和注册表添加信息外,也可以用WriteProfileString()函数向win.ini的"windows"节的"run"项目添加应用程序的全路径来实现,这要比其它两种方法简便的多,而且也比较安全。

  小结:采用ini配置设置文件是windows下配置系统和应用软件的一种非常普遍的方法,合理的使用该配置文件,不仅能增强软件的自身功能,也可以加强同系统、其他应用软件的相互联系,使我们的程序更加灵活。

关注此文的读者还看过:

返回开发频道首页

共2页。 上一页12

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络