X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/532d575bd9baedbbf1c52907a66255975f527530..f5766910b6731eb03e82371416e9778203396ce7:/src/msw/registry.cpp diff --git a/src/msw/registry.cpp b/src/msw/registry.cpp index 7020b4c030..ff832de32d 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 @@ -146,12 +143,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 +154,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 +162,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; } @@ -710,20 +705,21 @@ bool wxRegKey::DeleteKey(const wxChar *szKey) bool wxRegKey::DeleteValue(const wxChar *szValue) { - if ( !Open() ) - return false; + if ( !Open() ) + return false; m_dwLastError = RegDeleteValue((HKEY) m_hKey, WXSTRINGCAST szValue); // deleting a value which doesn't exist is not considered an error if ( (m_dwLastError != ERROR_SUCCESS) && - (m_dwLastError != ERROR_FILE_NOT_FOUND) ) { - wxLogSysError(m_dwLastError, _("Can't delete value '%s' from key '%s'"), - szValue, GetName().c_str()); - return false; + (m_dwLastError != ERROR_FILE_NOT_FOUND) ) + { + wxLogSysError(m_dwLastError, _("Can't delete value '%s' from key '%s'"), + szValue, GetName().c_str()); + return false; } - return true; + return true; } // ---------------------------------------------------------------------------- @@ -733,8 +729,8 @@ bool wxRegKey::DeleteValue(const wxChar *szValue) // return true if value exists bool wxRegKey::HasValue(const wxChar *szValue) const { - // this function should be silent, so suppress possible messages from Open() - wxLogNull nolog; + // this function should be silent, so suppress possible messages from Open() + wxLogNull nolog; if ( !CONST_CAST Open(Read) ) return false; @@ -858,7 +854,7 @@ bool wxRegKey::SetValue(const wxChar *szValue,const wxMemoryBuffer& buffer) bool wxRegKey::QueryValue(const wxChar *szValue, wxMemoryBuffer& buffer) const { - if ( CONST_CAST Open() ) { + if ( CONST_CAST Open(Read) ) { // first get the type and size of the data DWORD dwType, dwSize; m_dwLastError = RegQueryValueEx((HKEY) m_hKey, WXSTRINGCAST szValue, RESERVED, @@ -894,70 +890,71 @@ bool wxRegKey::QueryValue(const wxChar *szValue, wxMemoryBuffer& buffer) const bool wxRegKey::QueryValue(const wxChar *szValue, wxString& strValue, - bool raw) const + bool WXUNUSED_IN_WINCE(raw)) const { - if ( CONST_CAST Open(Read) ) { - - // first get the type and size of the data - DWORD dwType, dwSize; - m_dwLastError = RegQueryValueEx((HKEY) m_hKey, WXSTRINGCAST szValue, RESERVED, - &dwType, NULL, &dwSize); - if ( m_dwLastError == ERROR_SUCCESS ) { - if ( !dwSize ) { - // must treat this case specially as GetWriteBuf() doesn't like - // being called with 0 size - strValue.Empty(); - } - else { - m_dwLastError = RegQueryValueEx((HKEY) m_hKey, - WXSTRINGCAST szValue, - RESERVED, - &dwType, - (RegString)(wxChar*)wxStringBuffer(strValue, dwSize), - &dwSize); + if ( CONST_CAST Open(Read) ) + { - // expand the var expansions in the string unless disabled -#ifndef __WXWINCE__ - if ( (dwType == REG_EXPAND_SZ) && !raw ) + // first get the type and size of the data + DWORD dwType=REG_NONE, dwSize=0; + m_dwLastError = RegQueryValueEx((HKEY) m_hKey, WXSTRINGCAST szValue, RESERVED, + &dwType, NULL, &dwSize); + if ( m_dwLastError == ERROR_SUCCESS ) + { + if ( !dwSize ) { - DWORD dwExpSize = ::ExpandEnvironmentStrings(strValue, NULL, 0); - bool ok = dwExpSize != 0; - if ( ok ) + // must treat this case specially as GetWriteBuf() doesn't like + // being called with 0 size + strValue.Empty(); + } + else + { + m_dwLastError = RegQueryValueEx((HKEY) m_hKey, + WXSTRINGCAST szValue, + RESERVED, + &dwType, + (RegString)(wxChar*)wxStringBuffer(strValue, dwSize), + &dwSize); + + // expand the var expansions in the string unless disabled +#ifndef __WXWINCE__ + if ( (dwType == REG_EXPAND_SZ) && !raw ) { - wxString strExpValue; - ok = ::ExpandEnvironmentStrings - ( - strValue, - wxStringBuffer(strExpValue, dwExpSize), - dwExpSize - ) != 0; - strValue = strExpValue; - } + DWORD dwExpSize = ::ExpandEnvironmentStrings(strValue, NULL, 0); + bool ok = dwExpSize != 0; + if ( ok ) + { + wxString strExpValue; + ok = ::ExpandEnvironmentStrings(strValue, + wxStringBuffer(strExpValue, dwExpSize), + dwExpSize + ) != 0; + strValue = strExpValue; + } - if ( !ok ) - { - wxLogLastError(_T("ExpandEnvironmentStrings")); + if ( !ok ) + { + wxLogLastError(_T("ExpandEnvironmentStrings")); + } } - } -#else - wxUnusedVar(raw); #endif - // __WXWINCE__ - } + // __WXWINCE__ + } - if ( m_dwLastError == ERROR_SUCCESS ) { - // check that it was the right type - wxASSERT_MSG( !IsNumericValue(szValue), - wxT("Type mismatch in wxRegKey::QueryValue().") ); + if ( m_dwLastError == ERROR_SUCCESS ) + { + // check that it was the right type + wxASSERT_MSG( !IsNumericValue(szValue), + wxT("Type mismatch in wxRegKey::QueryValue().") ); - return true; + return true; + } } - } - } + } - wxLogSysError(m_dwLastError, _("Can't read value of '%s'"), - GetFullName(this, szValue)); - return false; + wxLogSysError(m_dwLastError, _("Can't read value of '%s'"), + GetFullName(this, szValue)); + return false; } bool wxRegKey::SetValue(const wxChar *szValue, const wxString& strValue) @@ -1415,4 +1412,3 @@ void RemoveTrailingSeparator(wxString& str) if ( !str.empty() && str.Last() == REG_SEPARATOR ) str.Truncate(str.Len() - 1); } -