原始地址:http://www.yesky.com/184/1836684_1.shtml
私有初始化文件的访问
对私有初始化文件的数据存取是由GetPrivateProfileInt()、GetPrivateProfileString()和WritePrivateProfileString()等三个API函数来完成的。其函数说明如下:
UINT GetPrivateProfileInt(LPCTSTR lpAppName, // 节名地址 LPCTSTR lpKeyName, // 项名地址 INT nDefault, // 在项名没有找到时返回的缺省值 LPCTSTR lpFileName // 初始化文件名地址 ); DWORD GetPrivateProfileString(LPCTSTR lpAppName, // 节名地址 LPCTSTR lpKeyName, // 项名地址 LPCTSTR lpDefault, // 缺省字符串 LPTSTR lpReturnedString, // 存放字符串的缓冲区地址 DWORD nSize, // 缓冲区大小 LPCTSTR lpFileName // 初始化文件名地址 ); BOOL WritePrivateProfileString(LPCTSTR lpAppName, // 节名地址 LPCTSTR lpKeyName, // 项名地址 LPCTSTR lpString, // 要写入的字符串地址 LPCTSTR lpFileName // 初始化文件名地址 ); |
其中,GetPrivateProfileInt()返回的是初始化文件lpFileName中lpAppName节内lpKeyName项的整数值,如果没有找到该项则返回缺省值nDefault。如果此项目存在,但值不为整数,则返回0。如果某项目的值中含有非数字字符则只返回第一个非数字前的字符,例如对于“Value = 21century”则只返回数值21。初始化文件名lpFileName可以是全路径也可以只是文件名,如果不指定具体路径,Windows系统将在系统目录对文件进行寻找。GetPrivateProfileString()和WritePrivateProfileString()的用法基本与之类似,只是处理对象的数据类型不同。
私有初始化文件主要用来保存同应用程序当前状态相关的一些信息,当程序退出后,这些信息由于已写入到初始化文件而得以保留,当程序再次运行时,可以通过对此初始化文件各项数据的读取而得知此应用程序在上次运行期间的相关信息。下面这段代码即通过对私有初始化文件的访问而对程序的运行次数和上一次的运行日期进行记录:
// 获取当前应用程序全路径 GetModuleFileName(NULL, buffer, MAX_PATH); sPath = CString(buffer); sPath = sPath.Left(sPath.ReverseFind('//')); // 得到初始化文件的全路径 sPath += "//Sample04.ini"; // 得到程序累计运行次数 UINT Time = GetPrivateProfileInt("PROGRAM", "RUNTIME", 0, sPath); // 得到上次运行日期 GetPrivateProfileString("DATE", "LAST", "2002-11-1", buffer, 1000, sPath); // 显示从初始化文件获取到的文件信息 sMsg.Format("本软件共运行过%d次,上次运行日期为%s", Time, CString(buffer)); AfxMessageBox(sMsg); // 累加运行次数,并保存到初始化文件 Time++; sTime.Format("%d", Time); WritePrivateProfileString("PROGRAM", "RUNTIME", sTime, sPath); // 获取当前日期,并保存到初始化文件 CTime tm = CTime::GetCurrentTime(); sDate.Format("%d-%d-%d", tm.GetYear(), tm.GetMonth(), tm.GetDay()); WritePrivateProfileString("DATE", "LAST", sDate, sPath); |
在程序执行后,初始化文件Sample04.ini的内容为:
[DATE] LAST =2002-11-12 [PROGRAM] RUNTIME =1 |