作者在 2008-04-29 23:15:05 发布以下内容
好久没有下手编程,离开开发岗位有段时间了。近期帮朋友捣腾一个软件,重拾起往日的“利剑”,感觉熟悉和亲切。陆续会有一些纯技术范畴的代码会放在博客里,虽粗浅但希望以后可以给自己一个借鉴(捡起来更容易些),当然也希望能得到访友的批评和指正。
/*****************************************************************
* 方法:LoadDefaultSetting()
* 输入:
* 输出:true:成功,false:不成功
* 描述:读取注册表中保存的软件系统设置,并将设置保存到相应的变量m_IsAutoConnect,m_IsAutoSave,m_DefaultPath
* 作者:Yin
* 日期:2008.04.24
* 版本:01
****************************************************************/
bool CDataManager::LoadDefaultSetting()
{
HKEY hKey; //注册表键句柄
DWORD Var; //键类型
DWORD ValueLength = 256; //读入的键值长度
CString LocalPath; //当前路径
LPBYTE Value = new BYTE[256]; //键值
LPCTSTR Info = "Software\\Bamboo"; //母键标识
//判断母键是否存在,若不存在则创建母键
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,Info,0,KEY_ALL_ACCESS,&hKey) != ERROR_SUCCESS) //打开注册表键
{
Var = REG_CREATED_NEW_KEY;
if(RegCreateKeyEx(HKEY_LOCAL_MACHINE,Info,0,NULL,0,0,NULL,&hKey,&Var) != ERROR_SUCCESS) //创建母键
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,Info,0,KEY_ALL_ACCESS,&hKey) != ERROR_SUCCESS) //重新打开注册表键
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
//读取软件版权,若不存在则创建新的默认归属
Var = REG_SZ; //无结尾字符串型
if(RegQueryValueEx(hKey,"Author",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
strcpy((char *)Value,"Yin"); //键值
if(RegSetValueEx(hKey,"Author",NULL,REG_SZ,Value,4) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
//读取软件版本号,若不存在则创建新的默认版本号
if(RegQueryValueEx(hKey,"Edition",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
strcpy((char *)Value,"1.0"); //键值
if(RegSetValueEx(hKey,"Edition",NULL,REG_SZ,Value,4) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
//读取软件数据文件路径名称
if(RegQueryValueEx(hKey,"FilePath",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
GetCurrentDirectory(256,LocalPath.GetBuffer(0));
LocalPath.Format("%s%s",LocalPath,"\\Data"); //添加子文件夹路径Data
strcpy((char *)Value,LocalPath); //键值
if(RegSetValueEx(hKey,"FilePath",NULL,REG_SZ,Value,LocalPath.GetLength()) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
else
{
//赋值到变量m_DefaultPath
}
//读取软件设置“是否启动自动连接串口”
Var = REG_BINARY;
if(RegQueryValueEx(hKey,"AutoConnect",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
Value[0]=1; //键值
if(RegSetValueEx(hKey,"AutoConnect",NULL,Var,Value,1) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
else
{
//赋值到变量m_IsAutoConnect
if(Value[0] == 0)
m_IsAutoConnect = FALSE;
else
m_IsAutoConnect = TRUE;
}
//读取软件设置“是否自动保存数据文件”
Var = REG_BINARY;
if(RegQueryValueEx(hKey,"AutoSave",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
Value[0]=1; //键值
if(RegSetValueEx(hKey,"AutoSave",NULL,Var,Value,1) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
else
{
//赋值到变量m_IsAutoSave
if(Value[0] == 0)
m_IsAutoSave = FALSE;
else
m_IsAutoSave = TRUE;
}
return TRUE;
}
/*****************************************************************
* 方法:LoadDefaultSetting()
* 输入:
* 输出:true:成功,false:不成功
* 描述:读取注册表中保存的软件系统设置,并将设置保存到相应的变量m_IsAutoConnect,m_IsAutoSave,m_DefaultPath
* 作者:Yin
* 日期:2008.04.24
* 版本:01
****************************************************************/
bool CDataManager::LoadDefaultSetting()
{
HKEY hKey; //注册表键句柄
DWORD Var; //键类型
DWORD ValueLength = 256; //读入的键值长度
CString LocalPath; //当前路径
LPBYTE Value = new BYTE[256]; //键值
LPCTSTR Info = "Software\\Bamboo"; //母键标识
//判断母键是否存在,若不存在则创建母键
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,Info,0,KEY_ALL_ACCESS,&hKey) != ERROR_SUCCESS) //打开注册表键
{
Var = REG_CREATED_NEW_KEY;
if(RegCreateKeyEx(HKEY_LOCAL_MACHINE,Info,0,NULL,0,0,NULL,&hKey,&Var) != ERROR_SUCCESS) //创建母键
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,Info,0,KEY_ALL_ACCESS,&hKey) != ERROR_SUCCESS) //重新打开注册表键
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
//读取软件版权,若不存在则创建新的默认归属
Var = REG_SZ; //无结尾字符串型
if(RegQueryValueEx(hKey,"Author",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
strcpy((char *)Value,"Yin"); //键值
if(RegSetValueEx(hKey,"Author",NULL,REG_SZ,Value,4) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
//读取软件版本号,若不存在则创建新的默认版本号
if(RegQueryValueEx(hKey,"Edition",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
strcpy((char *)Value,"1.0"); //键值
if(RegSetValueEx(hKey,"Edition",NULL,REG_SZ,Value,4) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
//读取软件数据文件路径名称
if(RegQueryValueEx(hKey,"FilePath",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
GetCurrentDirectory(256,LocalPath.GetBuffer(0));
LocalPath.Format("%s%s",LocalPath,"\\Data"); //添加子文件夹路径Data
strcpy((char *)Value,LocalPath); //键值
if(RegSetValueEx(hKey,"FilePath",NULL,REG_SZ,Value,LocalPath.GetLength()) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
else
{
//赋值到变量m_DefaultPath
}
//读取软件设置“是否启动自动连接串口”
Var = REG_BINARY;
if(RegQueryValueEx(hKey,"AutoConnect",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
Value[0]=1; //键值
if(RegSetValueEx(hKey,"AutoConnect",NULL,Var,Value,1) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
else
{
//赋值到变量m_IsAutoConnect
if(Value[0] == 0)
m_IsAutoConnect = FALSE;
else
m_IsAutoConnect = TRUE;
}
//读取软件设置“是否自动保存数据文件”
Var = REG_BINARY;
if(RegQueryValueEx(hKey,"AutoSave",NULL,&Var,Value,&ValueLength) != ERROR_SUCCESS) //查询键值
{
Value[0]=1; //键值
if(RegSetValueEx(hKey,"AutoSave",NULL,Var,Value,1) != ERROR_SUCCESS) //赋新键值
{
AfxMessageBox("注册信息读取失败,请重装系统并重启!");
RegCloseKey(hKey); //释放句柄
return FALSE;
}
}
else
{
//赋值到变量m_IsAutoSave
if(Value[0] == 0)
m_IsAutoSave = FALSE;
else
m_IsAutoSave = TRUE;
}
return TRUE;
}