配置文件的读取
在使用配置文件时,Windows提供了GetPrivateProfileSection函数用于读取配置文件。类似的还有GetPrivateProfileSectionNames、GetPrivateProfileString等一系列函数,用于操作配置文件。参考:http://msdn.microsoft.com/en-us/library/ms724348%28VS.85%29.aspx
在这里将要使用到GetPrivateProfileSection函数,其定义如下所示:
DWORD WINAPI GetPrivateProfileSection(
_In_ LPCTSTR lpAppName,
_Out_ LPTSTR lpReturnedString,
_In_ DWORD nSize,
_In_ LPCTSTR lpFIleName
);
参数说明:
lpAppName [in] 配置文件中区域名称。
lpReturnedString [out] 接收区域下面键值对的数据缓冲区。改缓冲区由一个或多个以NULL结尾的字符串填充;最后一个字符串由两个NULL字符结尾。
nSize [in] lpReturnedString数据缓冲区大小(字节为单位)。最大值32767个字节。
lpFileName [in] 配置文件名称。如果该参数不包含文件的绝对路径,系统在windows目录寻找改文件。
返回值:
返回取得的字符个数,不包括结尾的NULL字符。
配置文件的写法
Windows的配置文件以.ini结尾,其写入如下所示:
;分号代表注释,最好单独一行用于写注释
[section1]
key1=value1
key2=value2
;另起一个区域
[section2]
key3=value3
key4=value4
如果该文件为config.ini,要获取section1下的配置,可以采用如下方式调用GetPrivateProfileSection。
GetPrivateProfileSection("section", out, size, "config.ini");
利用配置文件初始化CCombox
为了能使用配置文件初始化CCombox控件,在Section中,不采用key=value方式,而是直接写入CCombox待插入的选项。
例如:
;密钥强度配置
[key strength]
512
1024
2048
首先,为对话框添加一个CCombox控件,并为其关联一个变量名为m_keyStrengthCB。接下来在OnInitDialog中添加下列代码:
CString configFile(_T(".\\config.ini")); // 配置文件名称
CString section(_T("key strength")); // 区域名称
_TCHAR buf[10240]; // 缓冲区大小
DWORD readLen = ::GetPrivateProfileSection(section, buf, 10240, configFile);
_TCHAR *pBuf = buf;
int i = 0;
while (readLen) {
CString keyStrength(pBuf);
m_keyStrengthCB.InsertString(i++, keyStrength); // 插入CCombox中
int len = keyStrength.GetLength();
pBuf += len + 1; // 获取下一个插入对象
readLen -= len + 1;
}
m_keyStrengthCB.SetCurSel(1); // 默认选中第二个,注:CCombox中序号从0开始
经过上述步骤,就能通配置文件方便的为CCombox添加选项。
效果图如下所示:
图1
图2
图2在图1的基础上通过修改config.ini配置文件,可以非常方便的修改CCombox的选项,不需要再程序中加入任何代码,然后在编译生成可执行文件。