mfc中注册表的使用

来源:互联网 发布:宏业软件怎么用 编辑:程序博客网 时间:2024/06/11 03:47

上个星期就在看mfc的注册表相关的东西。无奈上周心不在焉,并没有着手代码。这周终于运行成功了,记录下来,以后可以拿出来复习。

做注册表主要是为了项目中的一些不怎么变的数据,项目是和视频监控相关的,对于设置好的预置点,希望下一次应用程序重新打开的时候不需要重新设置这就需要保存预置点信息。

代码贴上:

int bytesToInt(byte* bytes, int size = 4)
{
 int addr = bytes[0] & 0xFF;
 addr |= ((bytes[1] << 8) & 0xFF00);
 addr |= ((bytes[2] << 16) & 0xFF0000);
 addr |= ((bytes[3] << 24) & 0xFF000000);
 return addr;
}//这是一段byte转int代码,下面的程序调用了,一并贴上。

在OnInitDialog()中打开注册表,也就是我希望能在程序一开始就读取上次的记录。

//打开       if (RegOpenKeyEx(HKEY_CURRENT_USER, SubKeyName, 0, KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS){RegCreateKey(HKEY_CURRENT_USER, _T("Software\\my Application\\Settings"), &hKey);//如果打开不成功就创建一个printf("Error:        Regedit        cannot        be        opened! ");}else{//读原来的键值       /*Buffer = sizeof(yzdgeshu);if (RegQueryValueEx(hKey, ValueName, 0, NULL, (BYTE *)&yzdgeshu, &Buffer) != ERROR_SUCCESS)*/Buffer = sizeof(ValueData);if (RegQueryValueEx(hKey, ValueName, 0, NULL, ValueData, &Buffer) != ERROR_SUCCESS){//不存在       yzdgeshu = 0;}else{//存在    yzdgeshu = bytesToInt(ValueData);      }}


接着在设置预置点之后。将信息保存至注册表:

DWORD temp = yzdgeshu;if (RegSetValueEx(hKey, ValueName, 0, REG_DWORD, (LPBYTE)&temp, sizeof(DWORD)) != ERROR_SUCCESS){printf("Error:        Change        Value        failed ");RegCloseKey(hKey);}//将预置点信息保存到temp,再写入到valuename的键中

代码很简单好用:包含了打开,创建,读取,存储四个操作。

参考了这两篇文章:

http://liuleijsjx.iteye.com/blog/767246

http://blog.sina.com.cn/s/blog_4ac0a0d30100e3vg.html

一个小尾巴:为了防止预置点的累增,我设置了一个按钮清空预置点信息。微笑
另一个小尾巴:在开始搜索框键入【regedit】命令,然后按回车键,可以查到注册表信息

原创粉丝点击