Close();
m_hKey = hKey;
+
+ // we don't know the parent of this key, assume HKLM by default
+ m_hRootKey = HKEY_LOCAL_MACHINE;
+
+ // we don't know in which mode was this key opened but we can't reopen it
+ // anyhow because we don't know its name, so the only thing we can is to hope
+ // that it allows all the operations which we're going to perform on it
+ m_mode = Write;
+
+ // reset old data
+ m_strKey.empty();
+ m_dwLastError = 0;
}
// ----------------------------------------------------------------------------
wxString str = bShortPrefix ? aStdKeys[key].szShortName
: aStdKeys[key].szName;
if ( !m_strKey.empty() )
- str << _T("\\") << m_strKey;
+ str << wxT("\\") << m_strKey;
return str;
}
#endif
// it might be unexpected to some that this function doesn't open the key
- wxASSERT_MSG( IsOpened(), _T("key should be opened in GetKeyInfo") );
+ wxASSERT_MSG( IsOpened(), wxT("key should be opened in GetKeyInfo") );
m_dwLastError = ::RegQueryInfoKey
(
m_dwLastError = ::RegOpenKeyEx
(
(HKEY) m_hRootKey,
- m_strKey.wc_str(),
+ m_strKey.t_str(),
RESERVED,
mode == Read ? KEY_READ : KEY_ALL_ACCESS,
&tmpKey
&tmpKey,
&disposition);
#else
- m_dwLastError = RegCreateKey((HKEY) m_hRootKey, m_strKey.c_str(), &tmpKey);
+ m_dwLastError = RegCreateKey((HKEY) m_hRootKey, m_strKey.t_str(), &tmpKey);
#endif
if ( m_dwLastError != ERROR_SUCCESS ) {
wxLogSysError(m_dwLastError, _("Can't create registry key '%s'"),
bool wxRegKey::Rename(const wxString& szNewName)
{
- wxCHECK_MSG( !m_strKey.empty(), false, _T("registry hives can't be renamed") );
+ wxCHECK_MSG( !m_strKey.empty(), false, wxT("registry hives can't be renamed") );
if ( !Exists() ) {
wxLogError(_("Registry key '%s' does not exist, cannot rename it."),
// now delete this key itself
Close();
- m_dwLastError = RegDeleteKey((HKEY) m_hRootKey, m_strKey.c_str());
+ m_dwLastError = RegDeleteKey((HKEY) m_hRootKey, m_strKey.t_str());
// deleting a key which doesn't exist is not considered an error
if ( m_dwLastError != ERROR_SUCCESS &&
m_dwLastError != ERROR_FILE_NOT_FOUND ) {
#ifndef __WXWINCE__
if ( (dwType == REG_EXPAND_SZ) && !raw )
{
- DWORD dwExpSize = ::ExpandEnvironmentStrings(strValue.c_str(), NULL, 0);
+ DWORD dwExpSize = ::ExpandEnvironmentStrings(strValue.t_str(), NULL, 0);
bool ok = dwExpSize != 0;
if ( ok )
{
wxString strExpValue;
- ok = ::ExpandEnvironmentStrings(strValue.c_str(),
+ ok = ::ExpandEnvironmentStrings(strValue.t_str(),
wxStringBuffer(strExpValue, dwExpSize),
dwExpSize
) != 0;
if ( !ok )
{
- wxLogLastError(_T("ExpandEnvironmentStrings"));
+ wxLogLastError(wxT("ExpandEnvironmentStrings"));
}
}
#endif
return false;
}
- wxFFileOutputStream ostr(filename, _T("w"));
+ wxFFileOutputStream ostr(filename, wxT("w"));
return ostr.Ok() && Export(ostr);
#else
size_t size,
wxRegKey::ValueType type = wxRegKey::Type_Binary)
{
- wxString value(_T("hex"));
+ wxString value(wxT("hex"));
// binary values use just "hex:" prefix while the other ones must indicate
// the real type
if ( type != wxRegKey::Type_Binary )
- value << _T('(') << type << _T(')');
- value << _T(':');
+ value << wxT('(') << type << wxT(')');
+ value << wxT(':');
// write all the rest as comma-separated bytes
value.reserve(3*size + 10);
- const char * const p = wx_static_cast(const char *, data);
+ const char * const p = static_cast<const char *>(data);
for ( size_t n = 0; n < size; n++ )
{
// TODO: line wrapping: although not required by regedit, this makes
// the generated files easier to read and compare with the files
// produced by regedit
if ( n )
- value << _T(',');
+ value << wxT(',');
- value << wxString::Format(_T("%02x"), (unsigned char)p[n]);
+ value << wxString::Format(wxT("%02x"), (unsigned char)p[n]);
}
return value;
// quotes and backslashes must be quoted, linefeeds are not
// allowed in string values
rhs.reserve(value.length() + 2);
- rhs = _T('"');
+ rhs = wxT('"');
// there can be no NULs here
bool useHex = false;
{
switch ( (*p).GetValue() )
{
- case _T('\n'):
+ case wxT('\n'):
// we can only represent this string in hex
useHex = true;
break;
- case _T('"'):
- case _T('\\'):
+ case wxT('"'):
+ case wxT('\\'):
// escape special symbol
- rhs += _T('\\');
+ rhs += wxT('\\');
// fall through
default:
if ( useHex )
rhs = FormatAsHex(value, Type_String);
else
- rhs += _T('"');
+ rhs += wxT('"');
}
break;
if ( !QueryValue(name, &value) )
break;
- rhs.Printf(_T("dword:%08x"), (unsigned int)value);
+ rhs.Printf(wxT("dword:%08x"), (unsigned int)value);
}
break;
// dump all our values
long dummy;
wxString name;
- wxRegKey& self = wx_const_cast(wxRegKey&, *this);
+ wxRegKey& self = const_cast<wxRegKey&>(*this);
bool cont = self.GetFirstValue(name, dummy);
while ( cont )
{
if ( ::RegOpenKeyEx
(
(HKEY)hRootKey,
- szKey.c_str(),
+ szKey.t_str(),
RESERVED,
KEY_READ, // we might not have enough rights for rw access
&hkeyDummy
inline const wxChar *RegValueStr(const wxString& szValue)
{
- return szValue.empty() ? (const wxChar*)NULL : szValue.c_str();
+ return szValue.empty() ? (const wxChar*)NULL : szValue.t_str();
}
#endif // wxUSE_REGKEY