📄 hxwinreg.h
字号:
/* ***** BEGIN LICENSE BLOCK *****
* Version: RCSL 1.0/RPSL 1.0
*
* Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file, are
* subject to the current version of the RealNetworks Public Source License
* Version 1.0 (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the RealNetworks Community Source License Version 1.0
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
* in which case the RCSL will apply. You may also obtain the license terms
* directly from RealNetworks. You may not use this file except in
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
* applicable to this file, the RCSL. Please see the applicable RPSL or
* RCSL for the rights, obligations and limitations governing use of the
* contents of the file.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the portions
* it created.
*
* This file, and the files included with this file, is distributed and made
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
class CHXString;
#include "hlxclib/windows.h"
class _CListOfCHXString_Node
{
public:
_CListOfCHXString_Node();
~_CListOfCHXString_Node();
CHXString& value();
const CHXString& value() const;
void value(const CHXString& rclsNewValue);
_CListOfCHXString_Node& operator=(const CHXString& rclsNewValue);
_CListOfCHXString_Node* next() const;
void next(_CListOfCHXString_Node* plocnNew);
_CListOfCHXString_Node* prev() const;
void prev(_CListOfCHXString_Node* plocnNew);
void Remove();
void Insert(_CListOfCHXString_Node& rlocnNew);
protected:
CHXString m_clsValue;
_CListOfCHXString_Node* m_plocPrev;
_CListOfCHXString_Node* m_plocNext;
_CListOfCHXString_Node(const _CListOfCHXString_Node& rlocnOther){}
};
class _CListIteratorCHXString_;
class _CListReverseIteratorCHXString_;
class _CListOfCHXString_
{
public:
typedef _CListIteratorCHXString_ iterator;
typedef _CListReverseIteratorCHXString_ reverse_iterator;
typedef const _CListReverseIteratorCHXString_ const_reverse_iterator;
_CListOfCHXString_();
_CListOfCHXString_(const _CListOfCHXString_& rlocOther);
~_CListOfCHXString_();
_CListOfCHXString_& operator=(const _CListOfCHXString_& rlocOther);
iterator begin();
const iterator begin() const;
iterator end();
const iterator end() const;
reverse_iterator rbegin();
const reverse_iterator rbegin() const;
reverse_iterator rend();
const reverse_iterator rend() const;
iterator insert(iterator itBefore, const CHXString&);
void insert
(
iterator itBefore,
const iterator itFirst,
const iterator itLast
);
void remove(iterator itThis);
void remove(iterator itFirst, iterator itLast);
void empty();
protected:
_CListOfCHXString_Node m_locnREnd;
_CListOfCHXString_Node m_locnEnd;
void _copy(const _CListOfCHXString_& rlocOther);
};
class _CListIteratorCHXString_
{
public:
_CListIteratorCHXString_();
_CListIteratorCHXString_
(
const _CListOfCHXString_Node& rlocnNewLocation
);
_CListIteratorCHXString_(const _CListIteratorCHXString_& rliocOther);
~_CListIteratorCHXString_();
_CListIteratorCHXString_& operator=
(
const _CListIteratorCHXString_& rliocOther
);
CHXString& operator*();
_CListIteratorCHXString_& operator=(const CHXString& rclsNewValue);
_CListIteratorCHXString_& operator++();
const _CListIteratorCHXString_ operator++(int);
_CListIteratorCHXString_& operator--();
const _CListIteratorCHXString_ operator--(int);
private:
_CListOfCHXString_Node* m_plocCurrent;
friend class _CListOfCHXString_;
friend BOOL operator==
(
const _CListIteratorCHXString_& rliocLeft,
const _CListIteratorCHXString_& rliocRight
);
friend BOOL operator!=
(
const _CListIteratorCHXString_& rliocLeft,
const _CListIteratorCHXString_& rliocRight
);
};
BOOL operator==
(
const _CListIteratorCHXString_& rliocLeft,
const _CListIteratorCHXString_& rliocRight
);
BOOL operator!=
(
const _CListIteratorCHXString_& rliocLeft,
const _CListIteratorCHXString_& rliocRight
);
class _CListReverseIteratorCHXString_
{
public:
_CListReverseIteratorCHXString_();
_CListReverseIteratorCHXString_
(
const _CListOfCHXString_Node& rlocnNewLocation
);
_CListReverseIteratorCHXString_
(
_CListReverseIteratorCHXString_& rlriocOther
);
~_CListReverseIteratorCHXString_();
_CListReverseIteratorCHXString_& operator=
(
const _CListReverseIteratorCHXString_& rlriocOther
);
CHXString& operator*();
_CListReverseIteratorCHXString_& operator=(const CHXString& rclsNewValue);
_CListReverseIteratorCHXString_& operator++();
const _CListReverseIteratorCHXString_ operator++(int);
_CListReverseIteratorCHXString_& operator--();
const _CListReverseIteratorCHXString_ operator--(int);
private:
_CListOfCHXString_Node* m_plocCurrent;
friend class _CListOfCHXString_;
friend BOOL operator==
(
const _CListReverseIteratorCHXString_& rlriocLeft,
const _CListReverseIteratorCHXString_& rlriocRight
);
friend BOOL operator!=
(
const _CListReverseIteratorCHXString_& rlriocLeft,
const _CListReverseIteratorCHXString_& rlriocRight
);
};
BOOL operator==
(
const _CListReverseIteratorCHXString_& rlriocLeft,
const _CListReverseIteratorCHXString_& rlriocRight
);
BOOL operator!=
(
const _CListReverseIteratorCHXString_& rlriocLeft,
const _CListReverseIteratorCHXString_& rlriocRight
);
class AWinRegValue
{
public:
AWinRegValue(const char* szName, HKEY hkParent)
: m_hkParent(hkParent)
, m_sName(szName)
{
}
virtual ~AWinRegValue(){}
HX_RESULT Delete()
{
if
(
RegDeleteValue
(
m_hkParent,
OS_STRING(m_sName)
) == ERROR_SUCCESS
)
{
return HXR_OK;
}
return HXR_FAIL;
}
void SetName(const char* szName){m_sName = szName;}
CHXString& GetName(){return m_sName;}
void SetParent(HKEY hkParent){m_hkParent = hkParent;}
virtual BOOL DoesExist() =0;
virtual BOOL IsDWORD(){return FALSE;}
virtual BOOL AsDWORD(UINT32*){return FALSE;}
virtual BOOL FromDWORD(UINT32){return FALSE;}
virtual BOOL IsString(){return FALSE;}
virtual BOOL AsString(CHXString&){return FALSE;}
virtual BOOL FromString(const char*){return FALSE;}
virtual BOOL IsStringArray(){return FALSE;}
virtual BOOL AsStringArray(_CListOfCHXString_&){return FALSE;}
virtual BOOL AsStringArray(char**){return FALSE;}
virtual BOOL FromStringArray (const _CListOfCHXString_&){return FALSE;}
virtual BOOL FromStringArray(const char*, UINT32){return FALSE;}
void FreeStringArray
(
char*& rszValue
){delete [] rszValue;rszValue=NULL;}
protected:
HKEY m_hkParent;
CHXString m_sName;
AWinRegValue(){}
private:
};
class CWinRegStringValue : public AWinRegValue
{
public:
CWinRegStringValue(const char* szName, HKEY hkParent);
virtual ~CWinRegStringValue();
CWinRegStringValue& operator=(const char* szNewValue);
BOOL IsString();
BOOL AsString(CHXString&);
BOOL FromString(const char*);
HX_RESULT Delete();
BOOL DoesExist();
private:
CWinRegStringValue(){}
CWinRegStringValue(const CWinRegStringValue&){}
};
class CWinRegDWORDValue : public AWinRegValue
{
public:
CWinRegDWORDValue(const char* szName, HKEY hkParent);
virtual ~CWinRegDWORDValue();
CWinRegDWORDValue& operator=(UINT32 dwNewValue);
BOOL IsDWORD();
BOOL AsDWORD(UINT32*);
BOOL FromDWORD(UINT32);
HX_RESULT Delete();
BOOL DoesExist();
private:
CWinRegDWORDValue(){}
CWinRegDWORDValue(const CWinRegDWORDValue&){}
};
class CWinRegStringArrayValue : public AWinRegValue
{
public:
CWinRegStringArrayValue(const char* szName, HKEY hkParent);
virtual ~CWinRegStringArrayValue();
CWinRegStringArrayValue& operator=(const _CListOfCHXString_&);
BOOL IsStringArray();
BOOL AsStringArray(_CListOfCHXString_&);
BOOL AsStringArray(char**);
BOOL FromStringArray(const _CListOfCHXString_&);
BOOL FromStringArray(const char*, UINT32);
HX_RESULT Delete();
BOOL DoesExist();
private:
CWinRegStringArrayValue(){}
CWinRegStringArrayValue(const CWinRegStringArrayValue&){}
};
class CWinRegKey
{
public:
CWinRegKey();
virtual ~CWinRegKey();
HX_RESULT Open();
HX_RESULT Create
(
const char* szClass=NULL,
DWORD dwOptions=REG_OPTION_NON_VOLATILE
);
HX_RESULT Close();
HX_RESULT Flush();
HX_RESULT DeleteSubKey(const char* szName);
BOOL DoesExist();
BOOL SetDesiredAccess(REGSAM rsNew);
REGSAM GetDesiredAccess();
BOOL SetRootKey(HKEY hkRoot);
HKEY GetRootKey();
HKEY GetHandle();
BOOL SetRelativePath(const char* szPath);
CHXString& GetRelativePath();
BOOL GetValue(const char* szName, AWinRegValue** ppwrvOut, UINT32 ulType=0);
BOOL ResetKeyEnumerator();
BOOL GetNextKey(CWinRegKey&);
BOOL ResetValueEnumerator();
BOOL GetNextValue(AWinRegValue** ppwrvNext);
void FreeValue(AWinRegValue*&);
protected:
private:
HKEY m_hkRoot;
HKEY m_hkThis;
CHXString m_sPath;
DWORD m_dwKeyEnumPos;
DWORD m_dwValueEnumPos;
REGSAM m_rsAccess;
BOOL m_bOpen;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -