//  -------------------------------------------------------------------

//  Filename        :   registry.h

//  Description     :   class declaration of registry routines

//  By              :   John Cruise

//  Date            :   1996 Mar 25

//  Last Modified   :   1996 Mar 25

//  Notes           :   Tabstop = 4

//  -------------------------------------------------------------------

//  Modifications   :   1995 Mar 25     John Cruise

//                  :       none as of now

//  -------------------------------------------------------------------


#if !defined( _REGISTRY_H )

#define _REGISTRY_H


#include <windows.h>

#include <winreg.h>


class CRegistry {
public:
    //  constructors

    CRegistry( HKEY hKey, LPCTSTR cSubKey, DWORD nOptions=0, REGSAM samDesired=KEY_ALL_ACCESS );
    CRegistry();

    //  open registry function

    virtual void Open( HKEY hKey, LPCTSTR cSubKey, DWORD nOptions=0, REGSAM samDesired=KEY_ALL_ACCESS );

    //  close registry function

    virtual void Close();

    //  write registry function

    virtual void Write( LPSTR cValueName, CONST BYTE *pData, DWORD nSize, DWORD nType=REG_SZ );

    //  read registry function

    virtual void Read( LPBYTE pDest, DWORD *nSize, DWORD *nType, LPSTR cValueName );

    //  get last error registry function

    virtual LONG GetLastError();

    //  enumerate the values 

    virtual BOOL EnumValue( DWORD nIndex, LPSTR szValueName, LPDWORD nValueNameLen, LPDWORD nType=NULL, LPBYTE lpValue=NULL, LPDWORD nValueSize=NULL );

    //  enumerate the keys

    virtual BOOL EnumKey( DWORD nIndex, LPSTR szKeyName, LPDWORD nKeyNameLen, PFILETIME stTimeWrite, LPSTR szClass=NULL, LPDWORD nClassLen=NULL );

    //  destructor

    virtual ~CRegistry();

protected:
    BOOL    m_bIsOpen;
    HKEY    m_hKey;
    LONG    m_nLastError;
};

#endif

syntax highlighted by Code2HTML, v. 0.8.11