X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/92218ce60024b07e9ae5a5790a85582db083e55c..3a3dde0d44c43bc70a1e9791381ada04b4953a5d:/src/msw/registry.cpp diff --git a/src/msw/registry.cpp b/src/msw/registry.cpp index a8e077e8c8..224927aa1b 100644 --- a/src/msw/registry.cpp +++ b/src/msw/registry.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: msw/registry.cpp +// Name: src/msw/registry.cpp // Purpose: implementation of registry classes and functions // Author: Vadim Zeitlin // Modified by: @@ -12,27 +12,24 @@ // - add high level functions (RegisterOleServer, ...) /////////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "registry.h" -#endif - // for compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif -// other wxWidgets headers -#include "wx/string.h" -#include "wx/intl.h" -#include "wx/log.h" -#include "wx/file.h" -#include "wx/wfstream.h" +#ifndef WX_PRECOMP + #include "wx/msw/wrapwin.h" + #include "wx/string.h" + #include "wx/intl.h" + #include "wx/log.h" +#endif -// Windows headers -#include "wx/msw/wrapwin.h" +#include "wx/file.h" +#include "wx/wfstream.h" +// Windows headers #ifdef __WXWINCE__ #include "wx/msw/private.h" #include @@ -54,6 +51,18 @@ typedef unsigned char *RegString; typedef BYTE* RegBinary; +#ifndef HKEY_PERFORMANCE_DATA + #define HKEY_PERFORMANCE_DATA ((HKEY)0x80000004) +#endif + +#ifndef HKEY_CURRENT_CONFIG + #define HKEY_CURRENT_CONFIG ((HKEY)0x80000005) +#endif + +#ifndef HKEY_DYN_DATA + #define HKEY_DYN_DATA ((HKEY)0x80000006) +#endif + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -72,15 +81,9 @@ aStdKeys[] = { HKEY_CURRENT_USER, wxT("HKEY_CURRENT_USER"), wxT("HKCU") }, { HKEY_LOCAL_MACHINE, wxT("HKEY_LOCAL_MACHINE"), wxT("HKLM") }, { HKEY_USERS, wxT("HKEY_USERS"), wxT("HKU") }, // short name? -#ifndef __WXWINCE__ { HKEY_PERFORMANCE_DATA, wxT("HKEY_PERFORMANCE_DATA"), wxT("HKPD") }, -#endif -#ifdef HKEY_CURRENT_CONFIG { HKEY_CURRENT_CONFIG, wxT("HKEY_CURRENT_CONFIG"), wxT("HKCC") }, -#endif -#ifdef HKEY_DYN_DATA { HKEY_DYN_DATA, wxT("HKEY_DYN_DATA"), wxT("HKDD") }, // short name? -#endif }; // the registry name separator (perhaps one day MS will change it to '/' ;-) @@ -146,12 +149,10 @@ wxRegKey::StdKey wxRegKey::ExtractKeyName(wxString& strKey) { wxString strRoot = strKey.BeforeFirst(REG_SEPARATOR); - HKEY hRootKey = 0; size_t ui; for ( ui = 0; ui < nStdKeys; ui++ ) { if ( strRoot.CmpNoCase(aStdKeys[ui].szName) == 0 || strRoot.CmpNoCase(aStdKeys[ui].szShortName) == 0 ) { - hRootKey = aStdKeys[ui].hkey; break; } } @@ -159,7 +160,7 @@ wxRegKey::StdKey wxRegKey::ExtractKeyName(wxString& strKey) if ( ui == nStdKeys ) { wxFAIL_MSG(wxT("invalid key prefix in wxRegKey::ExtractKeyName.")); - hRootKey = HKEY_CLASSES_ROOT; + ui = HKCR; } else { strKey = strKey.After(REG_SEPARATOR); @@ -167,13 +168,13 @@ wxRegKey::StdKey wxRegKey::ExtractKeyName(wxString& strKey) strKey.Truncate(strKey.Len() - 1); } - return (wxRegKey::StdKey)(int)hRootKey; + return (StdKey)ui; } wxRegKey::StdKey wxRegKey::GetStdKeyFromHkey(WXHKEY hkey) { for ( size_t ui = 0; ui < nStdKeys; ui++ ) { - if ( (int) aStdKeys[ui].hkey == (int) hkey ) + if ( aStdKeys[ui].hkey == (HKEY)hkey ) return (StdKey)ui; } @@ -901,7 +902,7 @@ bool wxRegKey::QueryValue(const wxChar *szValue, { // first get the type and size of the data - DWORD dwType, dwSize; + DWORD dwType=REG_NONE, dwSize=0; m_dwLastError = RegQueryValueEx((HKEY) m_hKey, WXSTRINGCAST szValue, RESERVED, &dwType, NULL, &dwSize); if ( m_dwLastError == ERROR_SUCCESS ) @@ -966,7 +967,7 @@ bool wxRegKey::SetValue(const wxChar *szValue, const wxString& strValue) { if ( CONST_CAST Open() ) { m_dwLastError = RegSetValueEx((HKEY) m_hKey, szValue, (DWORD) RESERVED, REG_SZ, - (RegString)strValue.c_str(), + (RegString)strValue.wx_str(), (strValue.Len() + 1)*sizeof(wxChar)); if ( m_dwLastError == ERROR_SUCCESS ) return true; @@ -1124,7 +1125,7 @@ static inline bool WriteAsciiString(wxOutputStream& ostr, const wxString& s) wxCharBuffer name(s.mb_str()); ostr.Write(name, strlen(name)); #else - ostr.Write(s, s.length()); + ostr.Write(s.mb_str(), s.length()); #endif return ostr.IsOk(); @@ -1412,9 +1413,8 @@ const wxChar *GetFullName(const wxRegKey *pKey, const wxChar *szValue) return s_str.c_str(); } -void RemoveTrailingSeparator(wxString& str) +inline void RemoveTrailingSeparator(wxString& str) { if ( !str.empty() && str.Last() == REG_SEPARATOR ) str.Truncate(str.Len() - 1); } -