/ Reg.h: interface for the CReg class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_)
#define AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CReg
{
private:
HKEY m_hKey;
public:
CReg();
CReg(HKEY hKey,LPCTSTR lpSubKey);
LONG OpenKey(HKEY hKey,LPCTSTR lpSubKey);
LONG DelSubKey(LPCTSTR lpSubKey);
LONG CloseKey();
LONG CreateKey(HKEY hKey,LPCTSTR lpSubKey);
LONG DeleteValue(LPCTSTR lpValueName);
LONG SetValue(LPCTSTR lpValueName,DWORD dwType,LPCTSTR lpData);
LONG QueryValue(LPCTSTR lpValueName,CString& Buffer); virtual ~CReg();
};#endif // !defined(AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_)// Reg.cpp: implementation of the CReg class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "gfg.h"
#include "Reg.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CReg::CReg()
{
m_hKey=0;
}CReg::CReg(HKEY hKey,LPCTSTR lpSubKey)
{
m_hKey=0;
RegOpenKey(hKey,lpSubKey,&m_hKey);
}CReg::~CReg()
{
CloseKey();
}LONG CReg::OpenKey (HKEY hKey,LPCTSTR lpSubKey)
{
ASSERT(!m_hKey);
LONG result=RegOpenKey(hKey,lpSubKey,&m_hKey);
return result;
}LONG CReg::DelSubKey(LPCTSTR lpSubKey)
{
ASSERT(m_hKey);
LONG result=RegDeleteKey(m_hKey,lpSubKey);
return result;
}LONG CReg::CloseKey()
{
LONG result=RegCloseKey(m_hKey);
return result;
}LONG CReg::CreateKey (HKEY hKey,LPCTSTR lpSubKey)
{
ASSERT(!m_hKey);
LONG result=RegCreateKey (hKey,lpSubKey,&m_hKey);
return result;
}LONG CReg::DeleteValue(LPCTSTR lpValueName)
{
ASSERT(m_hKey);
LONG result=RegDeleteValue(m_hKey,lpValueName);
return result;
}LONG CReg::SetValue(LPCTSTR lpValueName,DWORD dwType,LPCTSTR lpData)
{
ASSERT(m_hKey);
DWORD cbData;
switch (dwType)
{
case REG_SZ:
cbData=strlen(lpData);
break;
case REG_DWORD:
cbData=4;
break;
case REG_BINARY:
ASSERT(0);
}
LONG result=RegSetValueEx(m_hKey,lpValueName,NULL,dwType,(CONST BYTE*)lpData,cbData);
return result;
}LONG CReg::QueryValue(LPCTSTR lpValueName,CString& Buffer)
{
ASSERT(m_hKey);
DWORD dwType=0;
DWORD dwSize=0;
DWORD cbData=0;
LONG result=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)0,&dwSize);
if(result==ERROR_SUCCESS)
{
if(dwType==REG_SZ)
RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)Buffer.GetBuffer(dwSize),&dwSize);
if(dwType==REG_DWORD)
{
RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)&cbData,&dwSize);
Buffer.Format ("%d",cbData);
}
ASSERT(dwType!=REG_BINARY);
}
return result;
}
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_)
#define AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CReg
{
private:
HKEY m_hKey;
public:
CReg();
CReg(HKEY hKey,LPCTSTR lpSubKey);
LONG OpenKey(HKEY hKey,LPCTSTR lpSubKey);
LONG DelSubKey(LPCTSTR lpSubKey);
LONG CloseKey();
LONG CreateKey(HKEY hKey,LPCTSTR lpSubKey);
LONG DeleteValue(LPCTSTR lpValueName);
LONG SetValue(LPCTSTR lpValueName,DWORD dwType,LPCTSTR lpData);
LONG QueryValue(LPCTSTR lpValueName,CString& Buffer); virtual ~CReg();
};#endif // !defined(AFX_REG_H__9E88130A_F001_48DD_A950_2861BB96A6B7__INCLUDED_)// Reg.cpp: implementation of the CReg class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "gfg.h"
#include "Reg.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CReg::CReg()
{
m_hKey=0;
}CReg::CReg(HKEY hKey,LPCTSTR lpSubKey)
{
m_hKey=0;
RegOpenKey(hKey,lpSubKey,&m_hKey);
}CReg::~CReg()
{
CloseKey();
}LONG CReg::OpenKey (HKEY hKey,LPCTSTR lpSubKey)
{
ASSERT(!m_hKey);
LONG result=RegOpenKey(hKey,lpSubKey,&m_hKey);
return result;
}LONG CReg::DelSubKey(LPCTSTR lpSubKey)
{
ASSERT(m_hKey);
LONG result=RegDeleteKey(m_hKey,lpSubKey);
return result;
}LONG CReg::CloseKey()
{
LONG result=RegCloseKey(m_hKey);
return result;
}LONG CReg::CreateKey (HKEY hKey,LPCTSTR lpSubKey)
{
ASSERT(!m_hKey);
LONG result=RegCreateKey (hKey,lpSubKey,&m_hKey);
return result;
}LONG CReg::DeleteValue(LPCTSTR lpValueName)
{
ASSERT(m_hKey);
LONG result=RegDeleteValue(m_hKey,lpValueName);
return result;
}LONG CReg::SetValue(LPCTSTR lpValueName,DWORD dwType,LPCTSTR lpData)
{
ASSERT(m_hKey);
DWORD cbData;
switch (dwType)
{
case REG_SZ:
cbData=strlen(lpData);
break;
case REG_DWORD:
cbData=4;
break;
case REG_BINARY:
ASSERT(0);
}
LONG result=RegSetValueEx(m_hKey,lpValueName,NULL,dwType,(CONST BYTE*)lpData,cbData);
return result;
}LONG CReg::QueryValue(LPCTSTR lpValueName,CString& Buffer)
{
ASSERT(m_hKey);
DWORD dwType=0;
DWORD dwSize=0;
DWORD cbData=0;
LONG result=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)0,&dwSize);
if(result==ERROR_SUCCESS)
{
if(dwType==REG_SZ)
RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)Buffer.GetBuffer(dwSize),&dwSize);
if(dwType==REG_DWORD)
{
RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE*)&cbData,&dwSize);
Buffer.Format ("%d",cbData);
}
ASSERT(dwType!=REG_BINARY);
}
return result;
}
解决方案 »
- 急救…子对话框中没有oninitdialog(),怎么使用list control呀?
- 200分 关于Static控件 求一方法 可以有弹性,动态地 管理 或 方便的 改变 Static text 控件的位置 及 大小
- ShellExecute()打开IE浏览网页的问题?(只要解决问题,送200分)
- 关于atl菜单消息的问题
- vc初学者简单问题请教?
- 欢迎大家加入我的群"华南软件技术基地",群QQ为8373474,一起提高啊
- 求书
- 找了很久也没找到一个国内的开发数据库的网站
- 如何在Edit中输出回车!!!!!!!!!
- CDateTimeCtrl SetTime的时间不能改变吗?
- 如何拦截并且修改某个网络程序的的TCP数据包
- 帮忙写段代码,60分;
我觉得参考VCL的设计较好,即有一个由LPBYTE指针指向的缓冲区接收数据的GetData成员函数,然后再分别由成员函数ReadString、ReadInteger等(在其中调用GetData)来取得各个不同类型的数据。
在ID_OK中直接调用Flush()就行了。
有四个类,CRegInt是DWORD和int的;
CRegText是CString可读写的,CRegStatic是只读的CString CRegBin是二进制的,
这里只给出CRegText吧,如果要别的发一个Email到[email protected]我会寄去的^-^// RegText.h: interface for the CRegText class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_REGTEXT_H__F16B982B_F210_4552_8DEA_4BA0D5FB32E7__INCLUDED_)
#define AFX_REGTEXT_H__F16B982B_F210_4552_8DEA_4BA0D5FB32E7__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "atlbase.h"
#include "white magic.h"class CRegText : public CObject
{
public:
CString* m_pstrData;
LPCTSTR m_szValue;
DWORD Create(CString* pstrData,HKEY ParKey,LPCTSTR Key,LPCTSTR Value);
CRegText();
virtual ~CRegText();
CRegText(CString* pstrData,HKEY ParKey,LPCTSTR Key, LPCTSTR Value);
long FlushKey();
bool m_IsInitial;
CRegKey m_rkRegKey;private:
};#endif // !defined(AFX_REGTEXT_H__F16B982B_F210_4552_8DEA_4BA0D5FB32E7__INCLUDED_)
// RegText.cpp: implementation of the CRegText class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "white magic.h"
#include "RegText.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CRegText::CRegText()
{
m_IsInitial=false;
}CRegText::~CRegText()
{}CRegText::CRegText(CString* pstrData,HKEY ParKey,LPCTSTR Key, LPCTSTR Value)
{
DWORD dwCount=MAX_BUFFER;
char Buffer[MAX_BUFFER-1];
if(!m_IsInitial)
{
m_rkRegKey.Open(ParKey,Key);
m_rkRegKey.QueryValue(Buffer,Value,&dwCount);
*pstrData=Buffer;
if(!dwCount)
::memset((void*)Buffer,0,MAX_BUFFER);
m_szValue=Value;
m_IsInitial=true;
}
}long CRegText::FlushKey()
{
if(m_IsInitial)
m_rkRegKey.SetValue(*m_pstrData,m_szValue); return true;
}DWORD CRegText::Create(CString *pstrData, HKEY ParKey, LPCTSTR Key, LPCTSTR Value)
{
// CRegText(pstrData,ParKey,Key,Value);
DWORD dwCount=MAX_BUFFER;
char Buffer[MAX_BUFFER]; if(!m_IsInitial)
{
::memset(Buffer,NULL,MAX_BUFFER);
m_rkRegKey.Open(ParKey,Key);
m_rkRegKey.QueryValue(Buffer,Value,&dwCount);
if(!dwCount)
::memset((void*)Buffer,0,MAX_BUFFER); *pstrData=Buffer;
m_IsInitial=true;
m_szValue=Value;
m_pstrData=pstrData;
} return true;
}
请大家支持!
这是一款很好的电脑辅助工具。包括以下几大功能:·文件粉碎 ·文件分割·文件合并·生成网页索引·文本文件转成网页文件·简繁体转换·注册表修复等