在继续打字训练娱乐程序中,简要介绍一下学到的一个比较使用的文件,就是ini文件。
针对我的打字程序,我简要说一下ini文件的好处。我在子窗口设置主窗口的风格,现在就存在一个问题,用户在第一次使用这个程序时,选择了一定的操作,但是如果用户退出程序,再次执行还要重新设置,岂不是很郁闷,如果使用了ini文件就能很好的解决这个问题。下面简要介绍一二。
首先,我们要添加一个头文件,具体操作以前已经介绍,不妨命名为iniconfig.h,此后在里面定义一个类:
#ifndef _INICONFIG_H
#define _INICONFIG_H
#include <Windows.h>
#include <stdio.h>
class CIniConfig
{
public:
CIniConfig(char* file)
{
strcpy(file_name, file);
}
// getter
unsigned GetNumber(char* section_name, char* key_name)
{
return GetPrivateProfileIntA(section_name, key_name, 0, file_name);
}
void GetString(char* section_name, char* key_name, char* out_buf)
{
GetPrivateProfileStringA(section_name, key_name, "", out_buf, 100, file_name);
}
// setter
void SetNumber(char* section_name, char* key_name, unsigned val)
{
char buf[100] = { 0 };
sprintf(buf, "%d", val);
WritePrivateProfileStringA(section_name, key_name, buf, file_name);
}
void SetString(char* section_name, char* key_name, char* in_buf)
{
WritePrivateProfileStringA(section_name, key_name, in_buf, file_name);
}
private:
char file_name[MAX_PATH];
};
#endif // _INICONFIG_H
接着,在源程序中要包含这个类#include "iniconfig.h",对“写入ini”按钮进行操作,用这个类定义变量CIniConfig m_ini(szIniPath);但是我们还要寻找路径以便存放ini文件GetCurrentDirectory(MAX_PATH, szIniPath); lstrcat(szIniPath, "//a.ini");这两句是获得当前程序的路径并设置ini文件的存放路径,其中ini文件命名为a.ini,然后使用以下 m_ini.SetString("section1", "key1", "value1");
m_ini.SetString("section1", "key2", "value");
m_ini.SetString("section2", "key1", "value2");
m_ini.SetNumber("section2", "key2", 22);
再就是“读取ini”按钮的操作为,
char szValue[50] = {0};
GetCurrentDirectory(MAX_PATH, szIniPath);
lstrcat(szIniPath, "//a.ini");
CIniConfig m_ini(szIniPath);
m_ini.GetString("section1", "key1", szValue);
MessageBox(szValue, NULL, MB_OK);
int iValue;
iValue = m_ini.GetNumber("section2", "key2");
sprintf(szValue, "%d", iValue);
MessageBox(szValue, NULL, MB_OK);
最后运行一下程序,然后使用一下。这里说明一下函数sprintf函数在转换变量类型时用途很大,可以在平时多注意使用该函数,比其他的强制转换要好的多,也不用记得那么复杂,就一个函数,知道怎样使用,在变量转换类型时就能灵活自如。
本操作并不复杂,很简单,不过很多地方值得学习,学会简单的才能输入学习复杂的。加油!