Win32 init操作
Posted 不会写代码的丝丽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win32 init操作相关的知识,希望对你有一定的参考价值。
前言
init
是文件时微软提供一种轻量级数据存储方式,对于新版的应用文档提示应使用注册表。
我们首先看看init文件的格式:
语法比较简单
;xxxxxx
注释[xxxx]
表示某个节xxx=yyy
我们做下语法总结如下:
[section]
key=value
[section2]
key=value
BOOL WritePrivateProfileStringA(
LPCSTR lpAppName,
LPCSTR lpKeyName,
LPCSTR lpString,
LPCSTR lpFileName
);
lpAppName
: 节名 不区分大小写
lpKeyName
: key名 如果为空那么会删除这个节下面的所有数据
lpString
: value数值 如果为空那么删除这个key值
lpFileName
init 所在文件 这里注意 "./MyInit.ini"
和"MyInit.ini"
表示不同目录。
"./MyInit.ini"
表示当前进程所在目录的/MyInit.ini文件
"MyInit.ini"
表示的c:/windows/MyInit.ini
我们来看一个小案例
void CMFCApplication1Dlg::OnBnClickedButton1()
{
//写入到Windows 的win.ini文件,需要考虑权限
/*BOOL bRet = ::WriteProfileString(TEXT("我的自定义节名"),TEXT("我的自定义KEY名"), TEXT("我的自定义VALUE名"));
if (!bRet)
{
::AfxMessageBox("写入WriteProfileString失败");
}*/
BOOL bRet = ::WritePrivateProfileString(
TEXT("我的自定义节名"),//节名 不区分大小写
TEXT("我的自定义KEY名"),//key 数值,如果为空那么删除整个节下面的所有key和value
TEXT("我的自定义VALUE名"),//value 数值,如果为null 那么删除当前key
"./MyInit.ini"//写入到那个文件夹,如果直接写 "MyInit.ini"相对目录为c:/Windows 需要考虑权限,你应该写"./MyInit.ini"是相对于程序目录
);
if (!bRet)
{
::AfxMessageBox("写入WritePrivateProfileString失败");
}
bRet = ::WritePrivateProfileString(
TEXT("我的自定义节名"),//节名 不区分大小写
TEXT("我的自定义KEY名2"),//key
TEXT("我的自定义VALUE名2"),//value
"./MyInit.ini"//写入到那个文件夹,如果直接写 "MyInit.ini"相对目录为c:/Windows 需要考虑权限,你应该写"./MyInit.ini"是相对于程序目录
);
if (!bRet)
{
::AfxMessageBox("写入WritePrivateProfileString失败");
}
//
//bRet = ::WritePrivateProfileString(
// TEXT("我的自定义节名"),//节名 不区分大小写
// NULL,//key 为空删除这个节下面的所有东西
// TEXT("我的自定义VALUE名2"),//value
// "./MyInit.ini"//写入到那个文件夹,如果直接写 "MyInit.ini"相对目录为c:/Windows 需要考虑权限,你应该写"./MyInit.ini"是相对于程序目录
//);
//if (!bRet)
//{
// ::AfxMessageBox("写入WritePrivateProfileString失败");
//}
}
以上是关于Win32 init操作的主要内容,如果未能解决你的问题,请参考以下文章